3 回答

TA貢獻1725條經驗 獲得超8個贊
JSON 對象有一個名為 .has 的方法,它將返回一個布爾值。因此,邏輯類似于檢查 JSON 對象是否存在。如果是這樣,請檢查子節點是否存在更多數據。如果存在數組,則必須獲取該數組并使用任何循環在數組中遷移,并執行相同的操作。例如:
if (json.has("ip")) {
JSONObject jsonObject = getJSONObject.getString("ip")
String ip_ip_version_raw = jsonObject.getString("ip_ip_version_raw"));
if (jsonObject.has("ip_ip_addr_raw")){
JSONArray ip_ip_addr_raw = jsonObject.getJSONArray("ip_ip_addr_raw");
for (String s : ip_ip_addr_raw) {
...
}
}
}
參考資料:
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

TA貢獻1820條經驗 獲得超2個贊
我找到了一個解決方案,因為我的特殊情況下的結構總是,所以結構的深度總是相同的,而不是可變的。layers.layer.property
對于感興趣的人:
for (Iterator<String> layersIterator = jsonObject.getJSONObject("layers").keys(); layersIterator.hasNext(); ) {
String layer = layersIterator.next();
for (Iterator<String> propertyIterator = jsonObject.getJSONObject("layers").getJSONObject(layer).keys(); propertyIterator.hasNext(); ) {
String property = propertyIterator.next();
System.out.println("layers."+layer+"."+property);
}
}
添加回答
舉報