Blerta Dhimitri
Blerta Dhimitri

Reputation: 3473

Parse JsonString to JsonObject in Java

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?

Upvotes: 5

Views: 1873

Answers (2)

noamik
noamik

Reputation: 827

While the author of the question has already accepted an answer, someone else might be searching for the same issue. I've fixed the issues I know of with quick-json in https://code.google.com/p/quick-json/issues/detail?id=11

Upvotes: 2

Sotirios Delimanolis
Sotirios Delimanolis

Reputation: 279960

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.

Upvotes: 3

Related Questions