Foreach with JSONArray 和 JSONObject

2022-09-01 02:14:57

我正在使用 和 .我知道这两个类是不兼容的,但我仍然想做一件很自然的事情 - 我想在每个迭代步骤一(嵌套在其中)进行逐次过度解析。我试着这样做:org.json.simple.JSONArrayorg.json.simple.JSONObjectJSONArrayJSONObjectJSONArrayJSONObjectJSONArray

JSONArray arr = ...; // <-- got by some procedure
for(JSONObject o: arr){
    parse(o);
}

当我尝试编译此代码时,确实我得到了“不兼容的类型”错误,即使它看起来很自然。所以,我的问题是迭代的最佳方式是什么?JSONArray


答案 1

似乎您无法使用 .你可以像这样循环:JSONArrayfor eachJSONArray

for (int i=0; i < arr.length(); i++) {
    arr.getJSONObject(i);
}


答案 2

显然,实现了一个原始迭代器。这意味着每个元素都被视为 .您可以尝试投射:org.json.simple.JSONArrayObject

for(Object o: arr){
    if ( o instanceof JSONObject ) {
        parse((JSONObject)o);
    }
}

这就是Java 1.4及更早版本中的工作方式。