0

我有以下格式的json:

{
    “结果”: {
        “问题”:“巴拉克奥巴马与米特罗姆尼?”,
        “选项”: [
            “巴拉克奥巴马”,
            “米特·罗姆尼”,
            “其他”
                   ],
        “百分比”: [
            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

而不是使用

 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 回答
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 回答