如何解析数组中的JSON字符串

时间:2013-05-13 06:47:12

标签: java android

我有一个以下格式的json:

{
    "Result": {
        "question": "Barack Obama vs Mitt Romney?",
        "option": [
            "Barack Obama",
            "Mitt Romney",
            "Other"
                   ],
        "percentage": [
            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 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

使用:

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

as "option"键指向数组,而不指向String。

答案 2 :(得分: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"); 

答案 3 :(得分: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();}

试试这个..