I have this JSON string:
{
"query": {
"pages": {
"53113": {
"pageid": 53113,
"ns": 0,
"title": "Charing Cross",
"coordinates": [
{
"lat": 51.5073,
"lon": -0.12755,
"primary": "",
"globe": "earth"
}
]
},
"33109245": {
"pageid": 33109245,
"ns": 0,
"title": "Equestrian statue of Charles I, Charing Cross",
"coordinates": [
{
"lat": 51.5073,
"lon": -0.12768,
"primary": "",
"globe": "earth"
}
]
},
"4347521": {
"pageid": 4347521,
"ns": 0,
"title": "Greater London Built-up Area",
"coordinates": [
{
"lat": 51.5073,
"lon": -0.1277,
"primary": "",
"globe": "earth"
}
]
},
"17867": {
"pageid": 17867,
"ns": 0,
"title": "London",
"coordinates": [
{
"lat": 51.5072,
"lon": -0.1275,
"primary": "",
"globe": "earth"
}
]
}
}
}
}
Ho do I parse it? I wrote this code but I wasn't able to iterate through the json string. I need the "title" objects and the "coordinates" array of "lat" and "lon"...
I solved it in the end. Thank you all solved it like this:
try {
// Parsing JSON String or URL
JSONObject jsonObj = new JSONObject(jsonurl);
// grabbing objects
JSONObject obj_query = jsonObj.getJSONObject(TAG_QUERY);
JSONObject obj_pages = obj_query.getJSONObject(TAG_PAGES);
JSONArray arr_id = obj_pages.names();
for (int i = 0 ; i < arr_id.length() ; i ++)
{
JSONObject obj_id = obj_pages.getJSONObject(arr_id.get(i).toString());
// Log.i(LOGTAG, "obj_id: " + obj_id.toString());
String tag_pageid = obj_id.getString(TAG_PAGEID);
// String tag_ns = obj_id.getString(TAG_NS);
String tag_title = obj_id.getString(TAG_TITLE);
Log.i(LOGTAG, "page id: " + tag_pageid);
// Log.i(LOGTAG, tag_ns);
Log.i(LOGTAG, "Title: " + tag_title);
// using JSONArray to grab the TAG_COORDINATES
JSONArray arr_coord = obj_id.getJSONArray(TAG_COORDINATES);
// lets loop through the JSONArray and get all the items
for (int j = 0; j < arr_coord.length(); j++) {
// printing the values to the logcat
Log.i(LOGTAG, "lat:" + arr_coord.getJSONObject(j).getString(TAG_LAT).toString());
Log.i(LOGTAG, "lon: " + arr_coord.getJSONObject(j).getString(TAG_LON).toString());
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}