java - 解析 JSON,不确定如何以及何时使用迭代器(Android 平台)

标签 java android json parsing java-me

我要解析这个 JSON

{"files_informations": {
                         "row":{"value":"artist1"},
                         "row":{"value":"artist2"}
                       }
}

我想知道如何获得第一个值 artist1 和第二个值 artist2

这就是我正在做的:

JSONObject myObject = jObject.getJSONObject("files_informations");
JSONObject rowObject = myObject.getJSONObject("row");
Iterator<JSONObject> rowIt = rowObject.keys();

while (rowIt.hasNext()) {
     JSONObject tmp = rowIt.next();             
     Log.e("", tmp.getString("value"));
}

我得到了这个 JSONObject tmp = rowIt.next();

的 java.lang.classCastException

所以我有两个问题:

  • 我需要在这里使用迭代器吗 案例?
  • 应该如何使用它们?

编辑:

JSON 应该是这样的吗?

{"files_informations": [
                         "row":{"value":"artist2"},
                         "row":{"value":"artist1"}
                       ]
}

最佳答案

rowIt.next() 在这种情况下是“行”String

将您的 JSON 重构为:

{"files_informations":
  [ {"value":"artist2"},
    {"value":"artist1"} ] }

甚至这样:

{ "files_informations": [ "artist2", "artist1" ] } 

然后使用:

JSONArray artistsArr = myObject.getJSONArray("files_informations");
for (int i = 0; i < artistsArr.size(); i++) {
     // first case
     Log.d(TAG, artistsArr.get(i).getString("value"));
     // Second case
     Log.d(TAG, artistsArr.getString(i));
}

JSONArray 不支持迭代器,但是如果您确实需要,可以将它们转换为纯 Java 数组/列表。

关于java - 解析 JSON,不确定如何以及何时使用迭代器(Android 平台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896326/

相关文章:

java - 使用垂直空白字符作为 java 扫描器分隔符在每个末尾扫描空字符串

更新到构建工具 19.1.0 后的 Android Studio

android - 从 Android 上的 Google Place API 获取城市名称和邮政编码

json - 使用 GSON 的 JSON Java 对象给出计算器错误

html - 如何在 Windows 任务栏上显示来自 JSON 源的值?

JavaFX 在 JavaFX StringBinding 中将逗号 (,) 替换为点 (.)

java - 在 JOptionPane 中重新绘制组件

java - 从非静态 Java 获取数据到静态

android - 动画文件夹没有出现

ajax - Jquery 自动完成不显示结果