0

次の形式のjsonがあります。

{
    "結果": {
        "question": "バラク・オバマ vs ミット・ロムニー?",
        "オプション": [
            "バラック・オバマ"、
            「ミット・ロムニー」
            "他の"
                   ]、
        "パーセンテージ": [
            20,
            40,
            80
                      ]
               }
}

次のコードを使用して解析していますが、これによりオプション配列でヌルポインター例外が発生します。

JSONParser jParser = new JSONParser();

                    JSONObject json = jParser.getJSONObjectFromUrl(url);
                    Log.e("json",json.toString());

                    Log.e("-------url-------", ""+url);


                        String resultStr = json.getString("Result"); 
                        Log.e("result string ",resultStr);

                        JSONObject jsonObject2 = new JSONObject(resultStr);


                        String question_string = jsonObject2.getString("question"); 
                        Log.e("question String ",question_string);


                        String option_str = jsonObject2.getString("option"); 

                        JSONArray optionArray = new JSONArray(option_str);
                        Log.d("option array", String.valueOf(optionArray.length()));
4

4 に答える 4

1

この方法で json 配列を取得する必要があります。

JSONArray optionArray = jsonObject2.getJSONArray("option");
Log.d("option array", String.valueOf(optionArray.length()));

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/を確認してください

于 2013-05-13T06:49:21.070 に答える
0

ここではあまりにも複雑になりすぎており、すばらしい GetJSONObject 関数と getJSONArray 関数を使用していないため、多くの二重解析が発生します。これを試して

                JSONParser jParser = new JSONParser();

                JSONObject json = jParser.getJSONObjectFromUrl(url);
                Log.e("json",json.toString());

                Log.e("-------url-------", ""+url);

                    JSONObject jsonObject2 = json.getJSONObject("Result");


                    String question_string = jsonObject2.getString("question"); 
                    Log.e("question String ",question_string);

                    JSONArray optionArray = jsonObject2.getJSONArray("option"); 
于 2013-05-13T06:51:07.733 に答える
0

使用する代わりに

 String option_str = jsonObject2.getString("option"); 

これを使って :

 JSONARRAY optionArray = jsonObject2.getJSONAray("option");
 for(int i=0;i<optionArray.length; i++){
    String option = optionArray[i].getString();}

これを試して..

于 2013-05-13T07:00:39.997 に答える
0

使用する:

JSONArray optionArray = jsonObject2.getJSONArray("option");

キーは文字列ではなく配列を"option"指しているためです。

于 2013-05-13T06:49:52.387 に答える