I have the following String :
{
"response": true,
"model_original_id": "5acea0b5:1431fde5d6e:-7fff",
"model_new_id": 500568,
"model_new_version": 1,
"reload": true,
"idsModelProperties": [{
"key": "creation_date",
"value": "2013-12-23"
},
{
"key": "state",
"value": 1,
"displayValue": "Analisi"
}],
"idsNodes": [],
"idsConnectors": [],
"idsNodesProperties": []
}
and i need to parse it as a JSONObject. I tried to use quickjson but it gives me an exception when it tries to parse an emty string . This is what i tried :
JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonData=parser.parseJson(response_output);
Exception: Exception in thread "main" com.json.exceptions.JSONParsingException: @Key-Hierarchy::root/idsNodes[0]/ @Key:: Value is expected but found empty...@Position::256
Any idea?
I'll give you an alternative since it looks like quick-json has trouble parsing empty json arrays. Check out Gson.
String json = "{ \"response\": true, \"model_original_id\": \"5acea0b5:1431fde5d6e:-7fff\", \"model_new_id\": 500568, \"model_new_version\": 1, \"reload\": true, \"idsModelProperties\": [{ \"key\": \"creation_date\", \"value\": \"2013-12-23\" }, { \"key\": \"state\", \"value\": 1, \"displayValue\": \"Analisi\" }], \"idsNodes\": [], \"idsConnectors\": [], \"idsNodesProperties\": []}";
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(json);
JsonElement is an abstract class. Its sub types are JsonArray, JsonNull, JsonObject and JsonPrimitive. In the example above, the actual instance is a JsonObject because your json String is a json object. It internally contains a LinkedTreeMap but you don't really need access to it. You can access the different json objects directly on the JsonElement.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With