此问题在此处已有答案:
How to parse JSON in Java(36个答案)
九年前就关门了。
我有一个JSON字符串:
{
"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"
}
]
}
}
}
}
我该怎么解析它呢?我写了这段代码,但我无法遍历JSON字符串。我需要“title”对象和“lat”和“lon”的“coordinates”数组...
最后我解决了。谢谢大家这样解决:
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();
}
1条答案
按热度按时间68de4m5k1#
我的droidQuery库有一些方法可以大大简化这个任务: