【发布时间】:2015-10-29 13:54:57
【问题描述】:
似乎是一个简单的问题,我知道已经有多个这样的问题。我正在尝试从数组中的数组获取 JSON 数据。
我有一个 JSON 数组如下:
{
"results": [
{
"name": "John Doe",
"time": "09:00:00",
"claim": {
"date": "2015-08-06",
"comments": "Some comments"
}
},
{
"name": "Mary Smith",
"time": "10:00:00",
"claim": {
"date": "2015-08-06",
"comments": "Some comments"
}
}
}
]
}
我正在尝试从中解析出所有信息,我能够获取name 和time,但我无法从claim 数组中获取数据。
我在 SO 上查看了多个类似的问题,但他们的解决方案都没有解决我的问题。
这是我的 Java 代码:
@Override
protected void onPostExecute(JSONObject json) {
if (dialog.isShowing()) {
dialog.dismiss();
}
try {
// Getting JSON Array from URL
JSONArray android = json.getJSONArray(TAG_RESULTS);
for (int i = 0; i < android.length(); i++) {
JSONObject c = android.getJSONObject(i);
// Storing JSON items in Variables
String time = c.getString(TAG_TIME);
//For loop for claims array:
JSONArray claims = c.getJSONArray(TAG_CLAIM);
for (int j = 0; j < claims.length(); j++) {
JSONObject d = claims.getJSONObject(j);
String name = d.getString(TAG_NAME);
//other parsing and list view.
我收到此错误:
org.json.JSONException: Value {"date": "2015-08-06","comments": "Some comments"} at claim of type org.json.JSONObject cannot be converted to JSONArray
08-06 12:43:27.436 17586-17586/com.murrion.navigationdrawer W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:100)
08-06 12:43:27.436 17586-17586/com.murrion.navigationdrawer W/System.err﹕ at org.json.JSONObject.getJSONArray(JSONObject.java:588)
在这条线上:JSONArray claims = c.getJSONArray(TAG_CLAIM);
我不确定出了什么问题,我非常感谢一些帮助。谢谢
【问题讨论】:
-
请学习 json 的基础知识...显然:
{ .... }不是数组 -
你的 json 格式是错误的,检查一下你上面发布的内容是否有额外的 } 大括号,并且还声称不是数组它的对象,所以只需从 jsonObject 调用它
标签: java android arrays json parsing