java - 使用 for-each 循环或使用迭代器迭代 JSON 数组 (Android Studio)

标签 java android arrays json

我目前正在尝试使用 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/

相关文章:

javascript - 从 JavaScript 数组中删除对象?

PHP/Mysql array_pop 缺少第一个值

java - "PrinterException: Paper' s 可成像宽度太小 "I can see what' s 错误,但我该如何修复它?

java - 验证类层次结构覆盖

Android 开发者工具 16 和混淆器中的 -keepclasseswithmembers 问题

arrays - Node.JS + MongoDB 聚合 从 MongoDB 中的数据库中查找数组中的数组

java - 如何使用 IntelliJ IDEA 查找所有未使用的代码?

java - Map.ofEntries() 而不是 Map.of() 有什么用

android - 在 android 中更改 Activity 时使用 SQLite 的正确方法是什么?

android - 奥利奥本地化有时不起作用