【问题标题】:Android get JSON key valueAndroid获取JSON键值
【发布时间】:2012-04-14 13:40:35
【问题描述】:

我对解析特定的json 字符串有疑问。我没有找到任何对我的情况有帮助的东西。我有这个 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();
    }
}

那么有什么建议可以让我获得这些值吗?

【问题讨论】:

  • 当前代码有什么问题?

标签: android json


【解决方案1】:

我不知道我是否理解正确。您希望将“AM”和“BM”作为字符串值,以便您拥有国家名称的短标签。

“AM”是您要迭代的键:keys.next()

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多