JSON解析器:解析数据org.json.JSONException异常:类型org.json.JSONArray无法转换

时间:2019-01-12 07:53:28

标签: java android jsonparser

private class BackTask extends AsyncTask<Void, Void, Void> {
    protected void onPreExecute() {
        super.onPreExecute();
        dialog.show();
    }
    String url = "http://learnd.cf/getOtp.php";
    protected Void doInBackground(Void... params) {
        List<NameValuePair> list = new ArrayList<NameValuePair>();

        list.add(new BasicNameValuePair("username",USERNAME));
        list.add(new BasicNameValuePair("phone",PHONE));
        // getting JSON Object
        // Note that create datas url accepts POST method
        JSONObject json = (JSONObject) jsonParser.makeHttpRequest(url,"GET", list);

        // check log cat fro response
        Log.e("Create Response", json.toString());

        // check for success tag


        return null;
    }

    protected void onPostExecute(Void result) {
        dialog.dismiss();
    }
}

2019-01-12 13:09:36.585 11371-11569/com.example.rajeeshkv.learn_d E/JSON Parser:
    Error parsing data org.json.JSONException: Value 
    [  
        {  
            "temp_id":"12",
            "temp_clg_id":"1",
            "temp_course_id":"1",
            "temp_stud_name":"a",
            "temp_username":"a",
            "temp_password":"a",
            "temp_email":"a",
            "temp_phone":"4",
            "temp_gender":"Male",
            "temp_otp":"2060"
        }
    ]
    of type org.json.JSONArray cannot be converted to JSONObject

这是一个后台任务,用于将用户名和电话传递给数据库,并从数据库中获取相应的行,然后使用json解析器将其传递回android。但是我收到以下错误。我已经尝试了很多解决此问题的方法。有没有什么办法解决这一问题?

4 个答案:

答案 0 :(得分:0)

我认为在获取请求中,您的用户名和电话应该在哈希图中,而不是BasicNameValuePair列表

答案 1 :(得分:0)

正如花括号([])所建议的那样,您提供的json是数组的json,而不是json对象。

试试看

    JSONObject json = (JSONObject) ((JSONArray)jsonParser.makeHttpRequest(url,"GET", list)).getJSONObject(0);

答案 2 :(得分:0)

2019-01-12 13:09:36.585 11371-11569 / com.example.rajeeshkv.learn_d E / JSON解析器:解析数据org.json.JSONException时出错:值[{“ temp_id”:“ 12”,“ temp_clg_id“:” 1“,” temp_course_id“:” 1“,” temp_stud_name“:” a“,” temp_username“:” a“,” temp_password“:” a“,” temp_email“:” a“,” temp_phone“ :“ 4”,“ temp_gender”:“男性”,“ temp_otp”:“ 2060”}]类型org.json.JSONArray不能转换为JSONObject

这意味着返回值为JSONArray。但是您正在尝试将其转换为JSONObject。

尝试

JSONArray jsonArray = (JSONArray) jsonParser.makeHttpRequest(url,"GET", list);
JSONObject json = jsonArray.get(0);

我使用jsonArray.get(0)来假设jsonArray中只有一个对象。如果还有更多项目,则必须使用for循环进行迭代以获取所有值作为响应。

答案 3 :(得分:0)

尝试使用

  

排球

库并将请求发送为StringRequest