0

特定の文字列の解析について質問があり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();
    }
}

どうすればこれらの値を取得できますか?

4

1 に答える 1

6

私はあなたを正しく理解しているかどうかわかりません。文字列値として「AM」と「BM」を使用して、国名の短いタグを作成します。

「AM」は、繰り返し処理するキーです。keys.next()

String short = String.valueOf(keys.next());
JSONObject country = json.getJSONObject(short);
于 2012-04-14T13:51:08.153 に答える