3 回答

TA贡献1725条经验 获得超7个赞
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);
}
}
添加回答
举报