在Android中解析没有键的JSON数组

18

我该如何在Android中解析类似以下的数组?

[
 5,
 10,
 15,
 20
]

正如您所看到的,这个数组没有像其他例子数组一样定义一个键,比如下面的这个:

{
 "items": [
   5,
   10,
   15
   ]
}

对于第二个数组,我可以轻松地创建一个JSONObject 并使用:

JSONArray itemArray = jsonObject.getJSONArray("items")

但是,显然第一个数组没有键。那么应该如何处理?在使用标准的Android库时是否可能?


你找到解决方案了吗? - Harvin dutta
是的,被接受的答案已经回答了这个问题:https://dev59.com/eV0a5IYBdhLWcg3wNWXA#30586115 - Tanishq dubey
我该如何使用Retrofit实现这个功能?你能帮忙吗? - Harvin dutta
我会针对“retrofit”的具体用例打开一个新问题。 - Tanishq dubey
3个回答

24

你尝试过这样做吗?

try {
    // jsonString is a string variable that holds the JSON 
    JSONArray itemArray=new JSONArray(jsonString);
    for (int i = 0; i < itemArray.length(); i++) {
        int value=itemArray.getInt(i);
        Log.e("json", i+"="+value);
    }
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

这不会解析第二个JSON文件吗?如果我的问题写得令人困惑,我很抱歉。我想解析第一个JSON文件,即没有“items”键的那个。这是否意味着我的JSONArray只会被设置为我正在获取的JSON文件? - Tanishq dubey
1
是的,这将解析第二个JSON文件。很抱歉我没有理解你的问题。要获取第一个JSONArray,您可以执行类似于JSONArray itemArray=new JSONArray(yourstringname);的操作,其中yourstringname是一个String变量,它保存了您的JSON文件(我假设它是一个字符串),然后其余部分将保持不变。 - Bidhan
1
完美,我刚试了一下,它按预期工作。如果您不介意,您能否修改您的答案,以便未来读者/参考?之后我会接受它。 - Tanishq dubey

-2

考虑使用Foreach版本:

try {
    JSONArray itemArray=jsonObject.getJSONArray("items");
    for (var item : itemArray) {
        System.out.println(item);
    }
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

-2

在这里,您可以直接访问JSON数组中的数据。

JSONArray itemArray = jsonObject.getJSONArray("items");

for(int i=0;i<itemarray.length;i++)

{

int i = Integer.ParseInt(itemarray.get(i));

Log.i("Value is:::",""+i);

}

请再次阅读问题,这里不需要处理没有键的响应。 - Vikas Pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接