2012-04-14 271 views
0

我對解析特定的json字符串有疑問。在我的情況下,我找不到任何有助於我的東西。我有這樣的JSON:Android獲取JSON密鑰值

{ 
"AM": { 
    "country_name": "Armenia", 
    "data": { 
     "180854": { 
      "time_published": "2012-03-30 13:31:39", 
      "title": "Example", 
     }, 
     "180926": { 
      "time_published": "2012-04-02 05:21:44", 
      "title": "Example", 
     }, // keeps going on 
    } 
}, 
"BM": { 
    "country_name": "Bolivia", 
    "data": { 
     "180854": { 
      "time_published": "2012-03-30 13:31:39", 
      "title": "Example", 
     }, 
     "180926": { 
      "time_published": "2012-04-02 05:21:44", 
      "title": "Industrial PPI inflation eases to 5.5% y/y in February", 
     } 
    } 
    }, // continues 
} 

所以,我想知道的是有沒有辦法讓JSONObject的價值:AMBM。他們每次都不一樣,所以我不能檢查他們,但我希望能夠將他們保存爲String。以下是我用來解析JSON的實際內容:

public static void jsonParser(String jsonBuffer){ 

    try { 

     //String jsonData = new String(jsonBuffer,"UTF-8"); 
     JSONObject json = (JSONObject) new JSONTokener(jsonBuffer).nextValue(); 


     //JSONObject country = json.getJSONObject(String.valueOf(json.keys().next())); 
     Log.d("","json : "+json); 
     Iterator<Object> keys = json.keys(); 
     while (keys.hasNext()) { 
      JSONObject country = json.getJSONObject(String.valueOf(keys.next())); 

      String countryName = country.getString("country_name"); 
      Log.e("","country_name: "+countryName); 

      JSONObject data = country.getJSONObject("data"); 

      Iterator<Object> keys2 = data.keys(); 

      while(keys2.hasNext()){ 
       JSONObject datas = data.getJSONObject(String.valueOf(keys2.next())); 

       String published = datas.getString("time_published"); 
       Log.d("","published : "+published); 

       String title = datas.getString("title"); 
       Log.w("","title : "+title); 
      } 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

因此,如何獲得這些值?

+0

你在當前代碼有什麼問題? – MKJParekh 2012-04-14 13:46:23

回答

6

我不知道我是否正確理解你。您希望將「AM」和「BM」作爲字符串值,以便您可以使用國家/地區名稱的短標記。

的「AM」的關鍵是你遍歷:keys.next()

String short = String.valueOf(keys.next()); 
JSONObject country = json.getJSONObject(short); 
+0

我沒有注意到答案始終在我眼前...無論如何感謝你的答案! – 2012-04-14 14:04:12

+0

請幫助我這個http://stackoverflow.com/questions/39073000/how-to-get-all-json-object – 2016-08-22 07:44:12