使用for-each循环或使用Iterator(Android Studio)

时间:2017-06-10 23:27:53

标签: java android arrays json

我正在尝试使用for-each循环或Iterator而不是正常的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中表示为String的文本。起初我将值添加到一个简单的字符串数组中,但后来我将其更改为ArrayList,因为如果我使用for-each循环它将是合乎逻辑的。我尝试使用org.json.simple,net.sf.json作为替代方案但我无法使用这些库。

1 个答案:

答案 0 :(得分:0)

您可以使用迭代器,因为JsonArray提供了一个getIterator方法。但是这些是原始迭代器,因此没有与之关联的特定类型(因此每个元素都被视为一个Object)。你可以低估它们。

    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对象。