parse takes a string and forms a json object out of it:
{"id": 1,"title": "test" }
Will give you an object of size 2, containing id = 1, and title = "test".
string takes a string and forms a json string out of it.
The later example will return à json string containing "id": 1,"title": "test"
.
This basically means that you are trying to parse a json string which is not recognized as a json object. That will be the case with the example your are giving.
parse(const std::string& s) {
std::cout << json.parse(s) << std::endl;
std::cout << json.parse(s).size() << std::endl;
std::cout << json.parse(s).type() << std::endl;
std::cout << json.string(s) << std::endl;
std::cout << json.string(s).size() << std::endl;
std::cout << json.string(s).type() << std::endl;
}
For {"id": 1,"title": "test" }
return :
{"body":"body test","id":1,"title":"test","userId":1}
4
3
"{\"userId\":1, \"id\": 1,\"title\": \"test\",\"body\": \"body test\"}"
0
2
Notice the size of the json object and the fact the json string is between quotation and of size 0 instead of 4. Take a look at the type 3 (object) and 2 string.
For "value 1", which is not a json, it is a string, you will have:
"value 1"
0
"\"value 1\""
0
Notice here the 2 objects are of size 0, and type 2 (string).
This is the value of the type:
enum value_type
{
/// Number value
Number,
/// Boolean value
Boolean,
/// String value
String,
/// Object value
Object,
/// Array value
Array,
/// Null value
Null
};