我目前正在尝试使用 for-each 循环或迭代器而不是普通的 for 循环来迭代 JSONArray,但看起来 org.json 不支持它们。关于如何编辑以下代码以使其能够工作的任何想法,我已经尝试了大约 4 个小时来找到解决方案,但遗憾的是没有成功。任何帮助将不胜感激。这是代码的重要部分:
String strJson = loadJsonFromAssetsFolder();
JSONObject jsonRootObject = new JSONObject(strJson);
JSONArray jsonArray = jsonRootObject.optJSONArray("restaurant");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
list.add(jsonObject.optString("name").toString());
}
稍微澄清一下。第一行基本上是 jsonFile 中表示为字符串的文本。起初,我将值添加到一个简单的字符串数组中,但后来我将其更改为 ArrayList,因为如果我要使用 for-each 循环,这将是合乎逻辑的。我尝试使用 org.json.simple、net.sf.json 作为替代方案,但我无法使用这两个库来做到这一点。
最佳答案
您可以使用迭代器,因为 JsonArray 提供了 getIterator 方法。然而,这些是原始迭代器,因此没有与它们关联的特定类型(因此每个元素都被视为对象)。不过你可以贬低他们。
ArrayList<String> list = new ArrayList<>();
String strJson = loadJsonFromAssetsFolder();
JSONObject jsonRootObject = new JSONObject(strJson);
JSONArray jsonArray = jsonRootObject.optJSONArray("restaurant");
for (Object jsonObject : jsonArray) {
list.add(((JSONObject) jsonObject).optString("name"));
}
您有什么理由不想使用普通的 for 循环吗?确实没有什么区别。 您还可以查看 GSON 等库,它可以将其映射到 Java 对象。
关于java - 使用 for-each 循环或使用迭代器迭代 JSON 数组 (Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479032/