org.json.JSONException:字符0的输入结束

时间:2016-04-01 06:48:50

标签: java android json

在浏览器中手动运行URL时,将返回此JSON。

$final = array();
foreach($attri_ids_all as $key=>$value){
    $final[$value] = $inventory_code_qty[$key];
}

代码如下:

   {
  "error": false,
  "0": {
    "question": "Using the information that 6.7 × 52 = 348.4, Find the value of: 6.7 × 520",
    "useranswer": "3484",
    "correctanswer": "3484",
    "correct": "1"
  },
  "1": {
    "question": "Jane drives 50mph. London is 350 miles away. How long will it take?",
    "useranswer": "5",
    "correctanswer": "7",
    "correct": "0"
  },
  "2": {
    "question": "74*3?",
    "useranswer": "222",
    "correctanswer": "222",
    "correct": "1"
  },
  "3": {
    "question": "39+31?",
    "useranswer": "70",
    "correctanswer": "70",
    "correct": "1"
  }
}

然后在这里处理public List<String> GetTestResultsFromUserID(Integer userID){ BufferedReader bufferedReader = null; try { URL url = new URL(AppConfig.Results_URL + "?userid=" + userID); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestProperty ("Authorization", "Basic Z2FycmV0dGg6ZnJBc3Rpbmc0"); bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); String result; result = bufferedReader.readLine(); return ProcessResultSetFromDatabase(result); }catch(Exception e){ Log.d("Exception in try", "Exception" + e.toString()); return null; } }

result

注意:传递给private List<String> ProcessResultSetFromDatabase(String result){ List<String> resultSet = new ArrayList<String>(); try{ JSONObject jObj = new JSONObject(result); boolean error = jObj.getBoolean("error"); if (!error){ for (int i=0; i<48; i++){ JSONObject rSet = jObj.getJSONObject(Integer.toString(i)); resultSet.add("Q: "+rSet.getString("question")+" Correct Ans: "+rSet.getString("correctanswer")+" Given Ans: "+rSet.getString("useranswer")+" Correct:"+(rSet.getString("correct"))); } }else{ resultSet.add("No results at the moment"); } }catch(JSONException e){ e.printStackTrace(); } return resultSet; } 的结果在传递时似乎为空。

2 个答案:

答案 0 :(得分:0)

你的JSON输出是"0":{"question":字符串,你传递整数,所以你需要将int转换为字符串。

 for (int i=0; i<48; i++){


int tmpInt = i;
String str= String.valueOf(i);

                JSONObject rSet = jObj.getJSONObject(str);
                resultSet.add("Q: "+rSet.getString("question")+" Correct Ans: "+rSet.getString("correctanswer")+" Given Ans: "+rSet.getString("useranswer")+" Correct:"+(rSet.getString("correct")));                                   
            }  

答案 1 :(得分:0)

您应该使用Iterator解析数据。

 JSONObject jObj = new JSONObject(result);
 if (jObj.length() > 0) {

                    Iterator<String> keys = jObj.keys();
                    while (keys.hasNext()) {
                        String key = keys.next();
                        JSONObject json= jObj.optJSONObject(key);

                        Log.e("json", json.toString());

                        if (json!= null) {
                        resultSet.add("Q: "+json.getString("question")+" Correct Ans: "+json.getString("correctanswer")+" Given Ans: "+json.getString("useranswer")+" Correct:"+(json.getString("correct")));                                   
                    }
                }
  }