使用 JSONArray 和 JSONObject 进行 Foreach

新手上路,请多包涵

我正在使用 org.json.simple.JSONArrayorg.json.simple.JSONObject 。我知道这两个类 JSONArrayJSONObject 是不兼容的,但我仍然想做一件很自然的事情 - 我想为每个超过 JSONArray 解析在每个迭代步骤一 JSONObject (嵌套在 JSONArray 内)。我试着这样做:

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

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

原文由 Jacobian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.9k
2 个回答

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

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

这就是在 Java 1.4 及更早版本中所做的事情。

原文由 RealSkeptic 发布,翻译遵循 CC BY-SA 3.0 许可协议

似乎您无法使用 JSONArray 遍历 for each 。您可以像这样遍历 JSONArray

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

资源

原文由 dguay 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题