我; m試圖解析從Web服務器收到的json字符串作爲響應,但我有一個奇怪的問題。在我的json中,我有幾個JSONObjects
,我不知道他們的名字是什麼,我應該循環它們,具體取決於它有多少keys
。但問題在於,我使用的代碼每次都獲得相同的值,即使我知道還有其他值。Android JSON解析器每次獲取相同的值
這裏是我使用的鱈魚:
JSONObject json = (JSONObject) new JSONTokener(jsonBuffer).nextValue();
JSONObject country = json.getJSONObject(String.valueOf(json.keys().next()));
Iterator<Object> keys = json.keys();
while (keys.hasNext()) {
String countryName = country.getString("country_name");
Log.e("","country_name: "+countryName);
String data = country.getString("data");
Log.e("","data : "+data);
}
這裏是我的JSON的樣子:
"AZ": {
"country_name": "Azerbaijan",
"data": {
"181261": {
"time_published": "2012-04-04 15:55:29",
"title": "Azerbaijan, Turkey not to change stakes in TANAP",
"body": null
},
"181260": {
"time_published": "2012-04-04 15:53:10",
"title": "SOCAR mulls acquisition of Swiss refinery",
},
"181061": {
"time_published": "2012-04-03 05:53:00",
"title": "Azerbaijan, Lithuania mull LNG terminal investment",
},
// and so on....
}
}, // and it keeps going on
任何想法我jsonParser應該怎麼樣子?
你總是訪問相同的鍵:'country.getString(「country_name」)',你還期望什麼?另外我假設'keys.hasNext()'實際上並不提前迭代器。 – 2012-04-10 10:15:47
我有50個包含'country_name'的JSONObjects,這只是第一個例子。 – 2012-04-10 10:16:52
呃...好吧,在我看來,你有一個無盡的'while'循環,它實際上從來沒有出去給'country'分配一個新的值。您必須遍歷所有密鑰,獲取密鑰的國家對象,然後訪問它的值。目前,您正在獲取第一個國家/地區元素,獲取密鑰並檢查迭代器是否包含密鑰。但是你並沒有推進迭代器。 – 2012-04-10 10:18:36