我有一个以下格式的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()));
答案 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();}
试试这个..