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

时间:2010-10-09 16:06:43

标签: 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"}
                       ]
}

1 个答案:

答案 0 :(得分:2)

在这种情况下,

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));
}

JSONArrays不支持迭代器,但如果确实需要,可以将它们转换为普通的Java数组/列表。