簡體   English   中英

在Java中將JsonString解析為JsonObject

[英]Parse JsonString to JsonObject in Java

我有以下字符串:

{
    "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": []
}

我需要將其解析為JSONObject。 我試圖使用quickjson但它在嘗試解析一個emty字符串時給了我一個例外。 這是我試過的:

JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonData=parser.parseJson(response_output);

異常: 線程“main”中的異常com.json.exceptions.JSONParsingException:@ Key-Hierarchy :: root / idsNodes [0] / @Key ::值是預期的,但是找到空... @ Position :: 256

任何的想法?

我會給你一個替代方案,因為它看起來像quick-json在解析空的json數組時遇到了麻煩。 看看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是一個抽象類。 它的子類型是JsonArrayJsonNullJsonObjectJsonPrimitive 在上面的示例中,實際的實例是JsonObject因為您的json String是一個json對象。 它內部包含一個LinkedTreeMap但您實際上並不需要訪問它。 您可以直接在JsonElement上訪問不同的json對象。

雖然問題的作者已經接受了答案,但其他人可能正在搜索相同的問題。 我在https://code.google.com/p/quick-json/issues/detail?id=11中使用quick-json解決了我所知道的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM