简体   繁体   中英

how to parse a JSON string which is inside a array

I have a json of following format:

{
    "Result": {
        "question": "Barack Obama vs Mitt Romney?",
        "option": [
            "Barack Obama",
            "Mitt Romney",
            "Other"
                   ],
        "percentage": [
            20,
            40,
            80
                      ]
               }
}

and I am using following code to parse it but this giving null pointer exception at option array.

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()));

You need to get the json array this way:

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

check http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

Use:

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

as "option" key points to an array and not to a String.

You're going way too complicated here, and not using those lovely GetJSONObject and getJSONArray functions, which will cause you to double parse a lot. Try this

                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"); 

Instead of using

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

use this :

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

Try this..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM