我正在使用org.json.simple.JSONArray
和org.json.simple.JSONObject
。我知道这两个类JSONArray
和JSONObject
是不兼容的,但我还是想做一件很自然的事情--我想在JSONArray
上进行for-each,在每个迭代步骤中解析一个JSONObject
(嵌套在该JSONArray
里面)。我试着这样做:
JSONArray arr = ...; // <-- got by some procedure
for(JSONObject o: arr){
parse(o);
}
当我试图编译这段代码时,确实得到了"incompatible types"错误,尽管它看起来很自然。所以,我的问题是,什么是迭代JSONArray
的最好方法?
如果你使用的是Java 8,那么你可以使用
import org.json.JSONArray;
import org.json.JSONObject;
JSONArray array = ...;
array.forEach(item -> {
JSONObject obj = (JSONObject) item;
parse(obj);
});
刚刚添加了一个简单的测试来证明它是有效的:
在你的pom.xml
文件中添加以下依赖关系(为了证明它的工作原理,我使用了旧的jar,当我发布这个答案时,它还在那里)。
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
而简单的测试代码片断将是:
import org.json.JSONArray;
import org.json.JSONObject;
public class Test {
public static void main(String args[]) {
JSONArray array = new JSONArray();
JSONObject object = new JSONObject();
object.put("key1", "value1");
array.put(object);
array.forEach(item -> {
System.out.println(item.toString());
});
}
}
输出:
{"key1":"value1"}