Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android获取JSON键值_Android_Json - Fatal编程技术网

Android获取JSON键值

Android获取JSON键值,android,json,Android,Json,我对解析特定的json字符串有疑问。在我的处境中,我没有找到任何能帮助我的东西。我有一个json: { "AM": { "country_name": "Armenia", "data": { "180854": { "time_published": "2012-03-30 13:31:39", "title": "Example", }, "180926": {

我对解析特定的
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
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();
    }
}
publicstaticvoidjsonparser(字符串jsonBuffer){
试一试{
//字符串jsonData=新字符串(jsonBuffer,“UTF-8”);
JSONObject json=(JSONObject)新的JSONTokener(jsonBuffer).nextValue();
//JSONObject country=json.getJSONObject(String.valueOf(json.keys().next());
Log.d(“,”json:“+json”);
迭代器keys=json.keys();
while(keys.hasNext()){
JSONObject country=json.getJSONObject(String.valueOf(keys.next());
String countryName=country.getString(“country_name”);
Log.e(“,”国家名称:“+countryName”);
JSONObject数据=country.getJSONObject(“数据”);
迭代器keys2=data.keys();
while(keys2.hasNext()){
JSONObject data=data.getJSONObject(String.valueOf(keys2.next());
String published=datas.getString(“time_published”);
Log.d(“,”已发布:“+已发布);
String title=datas.getString(“title”);
Log.w(“,”标题:“+标题);
}
}
}捕获(JSONException e){
e、 printStackTrace();
}
}

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

我不知道我是否正确理解你的意思。您希望将“AM”和“BM”作为字符串值,这样您就有了国家名称的短标记

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


我不知道我是否理解正确。您希望将“AM”和“BM”作为字符串值,这样您就有了国家名称的短标记

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


你在当前代码中遇到了什么问题?你在当前代码中遇到了什么问题?我没有注意到答案一直在我眼前..无论如何谢谢你的答案!请帮我解决这个问题,我没有注意到答案一直在我眼前。无论如何,谢谢你的回答!请帮我做这个
String short = String.valueOf(keys.next());
JSONObject country = json.getJSONObject(short);