我试过这个但是在for loop optJSONObject(i)
中遇到错误{
"response": {
"code": 1,
"message": "success"
},
"data": {
"updates": [
{
"id":"67",
"date":"6 months ago",
"update_type": "7",
"update_id": "67",
"name":"ravi"
},
{
"id":"68",
"date":"3 months ago",
"update_type": "5",
"update_id": "68",
"name":"paresh"
},
{
"id":"69",
"date":"1 months ago",
"update_type": "6",
"update_id": "69",
"name":"sampath"
},
{
"id":"62",
"date":"9 months ago",
"update_type": "6",
"update_id": "62",
"name":"raju"
}
]
}
}
我为此尝试的代码是:
try {
InputStream is = null;
is = getApplicationContext().getResources().openRawResource(R.raw.myfile);
//CONVERTS STREAM OBJ IN STRING OBJ
mJSONString = convertStreamToString(is);
JSONObject obj = new JSONObject(mJSONString);
JSONObject dataobj = obj.getJSONObject("data");
JSONObject updateobj = dataobj.getJSONObject("update");
//System.out.println(new JSONObject(update)toString(2));
for(int i=0; i<updateobj.length(); i++){
JSONObject object = updateobj.optJSONObject(i);
mUpdates = new Mobile_UpdateActivity();
mUpdates.update_id = object.getString("update_id");
mUpdates.site_id = object.getString("site_id");
mUpdates.update_type = object.getString("update_type");
System.out.println(mUpdates.update_id);
System.out.println(mUpdates.site_id);
System.out.println(mUpdates.update_type);
}
}
但我在** optJSONObject(i)
面临错误错误:JSONObject类型中的方法optJSONObject(String)不是 适用于参数(int)**
答案 0 :(得分:0)
您收到以下警告:
optJSONObject(i)错误:类型中的方法optJSONObject(String) JSONObject不适用于参数(int)
因为在当前的json字符串中updates
是JSONArray
而不是JSONObject
,但是您正在尝试将JSONArray转换为JSONObject。您正在为JsonObject调用JsonObject.optJSONObject
需要一个String作为参数而不是JSONArray.optJSONObject
,它需要当前JsonArray中的item索引。更改您的代码以避免当前警告:
//...your code here...
JSONObject obj = new JSONObject(mJSONString);
JSONObject dataobj = obj.getJSONObject("data");
// get update jsonArray from dataobj JSONObject
JSONArray updateobj = dataobj.getJSONArray("update");
//...your code here...
答案 1 :(得分:0)
尝试替换行:
JSONObject updateobj = dataobj.getJSONObject("update");
到
JSONArray updateobj = dataobj.getJSONArray("update");
然后进入for循环:
JSONObject object = updateobj.optJSONObject(i);
到
JSONObject object = updateobj.get(i);