2012-04-14 288 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