2012-04-14 4 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: AM, BM. Каждый раз они разные, поэтому я не могу их проверить, но я хочу сохранить их как 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

ответ

6

Я не знаю, правильно ли я вас понимаю. Вы хотите иметь «AM» и «BM» в качестве значения String, чтобы у вас был короткий тег для названия страны.

«AM» является ключом вы итерация: keys.next()

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

Я не заметил, что ответ был на моих глазах все время ... спасибо за ответ! –

+0

Пожалуйста, помогите мне с этим http://stackoverflow.com/questions/39073000/how-to-get-all-json-object –