我使用的是org.json.simple.JSONArray
和org.json.simple.JSONObject
,我知道这两个类JSONArray
和JSONObject
是不兼容的,但我仍然想做一件很自然的事情--我想在每个迭代步骤中,通过JSONArray
解析一个JSONObject
(嵌套在JSONArray
中),我尝试这样做:
JSONArray arr = ...; // <-- got by some procedure
for(JSONObject o: arr){
parse(o);
}
当我试图编译这段代码时,我确实得到了“不兼容类型”的错误,尽管它看起来很自然。所以,我的问题是什么是迭代JSONArray
的最佳方法?
4条答案
按热度按时间5w9g7ksd1#
看起来你不能用一个
for each
来迭代JSONArray
,你可以这样循环你的JSONArray
:Source
u59ebvdq2#
显然,
org.json.simple.JSONArray
实现了一个 raw Iterator,这意味着每个元素都被认为是一个Object
,您可以尝试强制转换:这就是Java 1.4及更早版本的工作方式。
zlwx9yxi3#
请确保您正在使用此org.json:https://mvnrepository.com/artifact/org.json/json
如果您使用的是Java 8,则可以使用
只是添加了一个简单的测试来证明它的有效性:
将以下依赖项添加到您的
pom.xml
文件中(为了证明它可以工作,我使用了发布此答案时存在的旧jar)简单的测试代码片段如下所示:
输出:
yhqotfr84#
Object
类型转换为JSONObject
并访问值。例如: