[英]JSON: parsing with java and org.json (recursion)
我正在使用org.json
包來解析JSONArray(我將json字符串保存在數據庫中)。 但是,當同一鍵可能已關聯String或JSONObject時(取決於上下文),我無法成功解析它。
例如,請參閱以下JSON代碼...
[ { "cssClass" : "input_text",
"required" : "undefined",
"values" : "First Name"
},
{ "cssClass" : "checkbox",
"required" : "undefined",
"title" : "What's on your pizza?",
"values" : { "2" : { "baseline" : "undefined",
"value" : "Extra Cheese"
},
"3" : { "baseline" : "undefined",
"value" : "Pepperoni"
}
}
}
]
在上面的代碼中,鍵"values"
具有兩種可能性...
"First Name"
字符串 {"2":{"value":"Extra Cheese","baseline":"undefined"},"3":{"value":"Pepperoni","baseline":"undefined"}}
的JSONObject 。 當值可能是2種不同的數據類型時,如何正確處理呢?
您可能仍需要檢測它是JSONObject還是String,以便您可以進一步處理它,但是這里的某些內容可能會有所幫助...
您可以嘗試這樣的事情...
String cssClass = myJson.getString("cssClass");
if (cssClass.equals("input_text")){
// Read it as a String
String values = myJson.getString("values");
}
else if (cssClass.equals("checkbox")){
// Read it as a JSONObject
JSONObject values = myJson.JSONObject("values");
// further processing here
}
或者像這樣的東西...
String cssClass = myJson.getString("cssClass");
String values = myJson.getString("values");
if (cssClass.equals("input_text")){
// do nothing - it's already a String
}
else if (cssClass.equals("checkbox")){
// Parse the String into a JSONObject
JSONObject valuesObject = new JSONObject(values);
// further processing here
}
在同一個作用域下,在js或java中創建重復變量的想法是無效的,因此為了避免歧義,將它們放入json數組之前,請將它們放在具有不同變量名的單獨json對象中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.