我正在接收json並試圖使用JSONObject和JSONArray類對其進行操作。我有嵌套對象,需要確定這些嵌套對象是數組還是對象。問題是,如果我假設它是一個對象,並且它實際上是一個數組,那麼當我調用getJSONObject時,會引發異常。我想知道是否只有添加try/catch塊或者是否有更好的方法來做到這一點。例如,假設我有:如何檢測嵌入式JSON元素是否是Java中的JSONObject或JSONArray
{"key1": "val1",
"key2": {"level2": {"level3": "val3"}}
}
我還可以具有多個值的級別2元件和進來作爲數組:
{"key1": "val1",
"key2": {"level2": [{"level3": "val3"}]}
}
如何將提取級別2對象(作爲一個對象)並確定它是一個對象還是一個數組?使用字符串操作真正做到這一點的唯一方法是?
如果我做這樣的事情:
jsonObj.getJSONObject("key2").getJSONObject("level2");
這將導致一個錯誤: 「org.json.JSONException:JSONObject的[」 級別2 「]不是一個JSONObject和conversly,如果我叫getJSONArray(」 level2「)和level2不是數組我會得到一個錯誤,指示它不是一個數組。
我認爲這裏的解決方案是更好地命名密鑰,只是知道你想要解析什麼。換句話說,有一個一致的模式 –
問題是,json是從XML到JSON轉換器,如果json模式旨在將一個元素作爲一個數組,但該元素只有一個元素,轉換器沒辦法知道單個元素只是一個數組中的一個對象或單個元素。 – GregH
您正在使用哪個庫進行json解析 –