【发布时间】:2017-08-08 10:01:09
【问题描述】:
好的,我在这里挣扎。我从我的 php 服务器获取以下 JSON 格式的字符串(称为“结果”)(已编辑!最后我缺少一个花括号):
{"L1":[{"UserName":"User1","Avatar":"1"},{"UserName":"User2","Avatar":"2"},{"UserName": "User3","Avatar":"3"}],"L2":[{"UserName":"User4","Avatar":"4"},{"UserName":"User5","Avatar": "5"}]}
我正在尝试从 L1 对象 (?) 中提取带有 Avatar 编号的 ArrayList。但我得到一个错误
org.json.JSONException: 值 [{"UserName":"User1","Avatar":"1"},{"UserName":"User2","Avatar":"2"},{"UserName":"User3","Avatar": "3"}] org.json.JSONArray 类型的 L1 无法转换为 JSONObject
这是我的代码:
try {
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("L1"));
ArrayList<Integer> arrList = new ArrayList<>();
if (jsonArray != null) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject json = jsonArray.getJSONObject(i);
arrList.add(json.getInt("Avatar"));
AvatarList = arrList;
}
}
String query_result = "SUCCESS";
if (query_result.equals("FAILURE")) {
} else {
setAvatars(AvatarList);
}
} catch (JSONException e) {
Log.e("log_tag", "Error converting result "+e.toString());
}
如果我使用
jsonObject.getJSONArray("L1")
我得到同样的错误。 有什么建议? 提前致谢!
(编辑:我在原始帖子中犯了一个错误。JSON 字符串中缺少一个大括号。感谢那些发现它的人)
【问题讨论】:
-
如果你在 jsonlint.com 中查看这个 json,你会发现它的格式不正确
-
也可以试试jsonpath.com
-
您的 json 无效。在后端正确格式化。粘贴 json
jsoneditoronline.org以验证错误。 -
两件事。首先,我在帖子中的 JSON 字符串末尾缺少一个“}”,因此修复了这个问题,但它并没有解决问题。其次,@atulquest93,感谢您提供的链接,将来会非常有用!