在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编码数组?
swift 4 使用 Alamofire 解析没有键的 JSON