Android JSONArray问题

时间:2012-01-31 20:12:48

标签: android json

我正面临JSON问题而且不知道接近它。我试图获取JSONArray虽然应用程序永远不会知道此数据集的相应名称。例如,我们有类似以下数据集的内容:

{"Kobe":[{"Location":"LA","Position":"PG"}]}

通常要获得与Kobe相对应的值,我会使用: contentArray = json.getJSONArray("Kobe");

通过这样做,我将获得具有两个元素的位置,位置和位置。我的问题是,如果我不知道名字是“科比”会发生什么。我需要以某种方式在运行时动态获取适当的名称以传递到.getJSONArray()函数。应用程序是盲目的,并且在数据实际从服务器到达之前不知道名称值对。任何想法,想法,代码片段都是受欢迎的。

感谢。

4 个答案:

答案 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);