我正面临JSON问题而且不知道接近它。我试图获取JSONArray虽然应用程序永远不会知道此数据集的相应名称。例如,我们有类似以下数据集的内容:
{"Kobe":[{"Location":"LA","Position":"PG"}]}
通常要获得与Kobe相对应的值,我会使用:
contentArray = json.getJSONArray("Kobe");
通过这样做,我将获得具有两个元素的位置,位置和位置。我的问题是,如果我不知道名字是“科比”会发生什么。我需要以某种方式在运行时动态获取适当的名称以传递到.getJSONArray()函数。应用程序是盲目的,并且在数据实际从服务器到达之前不知道名称值对。任何想法,想法,代码片段都是受欢迎的。
感谢。
答案 0 :(得分:1)
查看JsonObject的api,有一种获取返回迭代器的键的方法。您应该能够使用它并迭代键。
答案 1 :(得分:0)
这应该适合你:
String value = "{\"Kobe\":[{\"Location\":\"LA\",\"Position\":\"PG\"}]}\r\n";
JSONObject obj = new JSONObject(value);
JSONArray array = null;
for (Iterator<?> keys = obj.keys(); array == null && keys.hasNext();) {
array = obj.optJSONArray((String) keys.next());
}
// array will now contain null if no array was found or the first array encountered.
答案 2 :(得分:0)
您可以尝试类似
的内容JSONObject json = new JSONObject("{\"key1\":\"String\",\"key2\":[1,2,3,4,5], \"key3\":[\"str1\", \"str2\"]}");
Iterator<String> keys = json.keys();
for(;keys.hasNext();) {
String key = keys.next();
Object obj = json.get(key);
if (obj instanceof JSONArray) {
JSONArray array = (JSONArray) obj;
Log.d("Ololo", array.toString());
}
}
答案 3 :(得分:0)
我使用库google.com.gson
在这种情况下,你可以用一个简单的类映射你的json对象,然后传递一个这样的数组:
...
class Coordinates {
String location;
String position;
}
...
然后你可以像这样使用fromJson方法:
Coordinates[] array = fromJson(data, Coordinates[].class);