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

Posted

技术标签:

【中文标题】在Android中解析没有键的JSON数组【英文标题】:Parse JSON Array without Key in Android 【发布时间】:2015-08-15 15:42:40 【问题描述】:

如何在 android 中解析如下数组?

[
 5,
 10,
 15,
 20
]

如您所见,没有定义数组的键,就像其他示例数组一样,例如:


 "items": [
   5,
   10,
   15
   ]

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

JSONArray itemArray = jsonObject.getJSONArray("items")

但是,很明显,第一个数组没有键。那么怎么办呢?甚至可以使用标准的 Android 库吗?

【问题讨论】:

你找到解决办法了吗? 是的,接受的答案是:***.com/a/30586115/2676875 我如何通过改造来实现这一点你能帮忙 我会针对retrofit的具体用例提出一个新问题 【参考方案1】:

你试过这样做吗?

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 文件? 是的,这将解析第二个 JSON 文件。对不起,我没有理解你的问题。要获得第一个 JSONArray,您可以执行 JSONArray itemArray=new JSONArray(yourstringname); 之类的操作,其中 yourstringname 是一个保存 JSON 文件的字符串变量(我假设它是一个字符串),然后其余部分相同。 完美,刚刚尝试过,它按预期工作。如果您不介意,您能否修改您的答案,使其与未来读者/参考的问题相匹配?之后我会接受的。【参考方案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();

【讨论】:

【参考方案3】:

这里可以直接访问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);


【讨论】:

再读一遍问题,没有key的回答需要在这里处理。

以上是关于在Android中解析没有键的JSON数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用json方法解析android中没有键名的数组内的嵌套json编码数组?

快速解析动态键的json响应问题

swift 4 使用 Alamofire 解析没有键的 JSON

使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中

如何在没有目标c的键的情况下解析json第一个对象?

两个带有json键的数组[重复]