我使用一个名为 JSONObject
的JSON库(如果需要,我不介意切换) .
我知道如何迭代 JSONArrays
,但是当我解析来自Facebook的JSON数据时,我没有得到一个数组,只有 JSONObject
,但我需要能够通过其索引访问一个项目,例如 JSONObject[0]
以获得第一个,我无法弄清楚该怎么做 .
{
"http://http://url.com/": {
"id": "http://http://url.com//"
},
"http://url2.co/": {
"id": "http://url2.com//",
"shares": 16
}
,
"http://url3.com/": {
"id": "http://url3.com//",
"shares": 16
}
}
11 回答
也许这会有所帮助:
对于我的情况,我发现迭代
names()
运作良好我会避免使用迭代器,因为它们可以在迭代期间添加/删除对象,也可以使用for循环来清理代码 . 少线简单代码 .
无法相信没有比使用迭代器更简单和安全的解决方案......
JSONObject
names ()
方法返回JSONObject键的JSONArray,因此您只需循环遍历它:首先把它放在某个地方:
或者,如果您可以访问Java8,只需:
然后简单地遍历对象的键和值:
org.json.JSONObject现在有一个keySet()方法,它返回一个
Set<String>
,可以很容易地通过for-each循环 .我做了一个小的递归函数,遍历整个json对象并保存键路径及其值 .
使用Java 8和lambda,更清洁:
https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html#forEachRemaining-java.util.function.Consumer-
我曾经有一个json,它需要增加一个id,因为它们是0索引的并且破坏了Mysql自动增量 .
因此,对于我编写此代码的每个对象 - 可能对某人有帮助:
用法:
这可以转换为适用于JSONArray作为父对象
下面的代码对我来说很好 . 如果可以进行调整,请帮助我 . 这甚至可以从嵌套的JSON对象获取所有键 .