Reputation: 1530
I have a simple issue, unable to tackle it out since 2 days. Being a newbie in Android is what seems grueling at times. But here goes,
A simple JSON file is depicted as below:
"results" : [
{
"value1" : {
"sub-value" : {
"sub-sub-value1" : "This is one value",
"sub-sub-value2" : "This is one more.."
}
},
"value2" : "http://someURL.com",
"value3" : "areferencejunkvalue",
}
],
...<many such result sets>
"status" : "status_value"
}
The code is as below for parsing this simple JSON file.
try {
JSONArray results = json.getJSONArray("results");
JSONObject value1 = results.getJSONObject("value1");
JSONArray subvalue = locationGeom.getJSONArray("sub-value");
for (int i = 0; i < results.length(); i++) {
// Gets data for value2,value3
String value2 = results.getString("value2");
String value3 = results.getString("value3");
// Gets data from the sub-sub-value1
String ssv1 = subvalue.getJSONObject(0).getString("sub-sub-value1").toString();
// Gets data from the sub-sub-value2
String ssv2 = subvalue.getJSONObject(0).getString("sub-sub-value2").toString();
}
} catch (JSONException e1) {
Log.e("E", "Issue is here..");
e1.printStackTrace();
}
Now the issue is, the following:
05-06 23:39:07.846: W/System.err(378): org.json.JSONException: Value [JSONObject parsed] at results of type org.json.JSONArray cannot be converted to JSONObject
Can anybody tell me where am I going wrong here? Help is sincerely appreciated.
Upvotes: 1
Views: 551
Reputation: 137282
sub-value
is not an array, but an object, e.g.:
JSONArray results = json.getJSONArray("results");
JSONObject value1 = results.getJSONObject(0).getJSONObject("value1");
JSONObject subvalue = locationGeom.getJSONObject("sub-value");
The basic extraction rules are pretty simple:
from \ get | JSONObject | JSONArray
------------+---------------------------------+--------------------------------
JSONObject | jobj.getJSONObject(String key); | jobj.getJSONArray(String key);
JSONArray | jobj.getJSONObject(int index); | jobj.getJSONArray(int index);
Please also refer to:
Upvotes: 2