W / System.err:org.json.JSONException:org.json.JSONArray类型的Value []无法转换为JSONObject

时间:2017-12-18 11:20:37

标签: java android mysql json

我需要在database MySql

上保存数据

这是代码:

private void uploadMultipart(final String imageData,final String titolo,final String sottotitolo,final String data) {
        String tag_string_req = "req_register";

        StringRequest strReq = new StringRequest(Request.Method.POST,
                AppConfig.UPLOAD_URL, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "Register Response: " + response.toString());
               // hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");
                    if (!error) {


                        Toast.makeText(getActivity(), "Aggiunto ai preferiti!", Toast.LENGTH_LONG).show();

                    } else {

                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(getActivity(),
                                errorMsg, Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Registration Error: " + error.getMessage());
                Toast.makeText(getActivity(),
                        error.getMessage(), Toast.LENGTH_LONG).show();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();
                params.put("url", imageData);
                params.put("titolo", titolo);
                params.put("sottotitolo", sottotitolo);
                params.put("data", data);
                params.put("id", id);


                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
    }

但是使用此代码我得到exception

W/System.err: org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject
有人可以帮帮我吗?感谢先进的每个人!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

3 个答案:

答案 0 :(得分:0)

这里使用jsonArray到jsonObject

JSONObject jObj = new JSONObject(response);

相反,请像这样使用

JSONArray json = new JSONArray(response);

答案 1 :(得分:0)

在您编写JSONObject的代码上,传递JSON数组表示您的响应是数组类型。 写JSONArray jsonArray = new JSONArray(响应)现在你可以访问这个数组

如需更多信息,请发表评论我会帮助您。

由于

答案 2 :(得分:0)

很可能你的响应来自onResponse(String response)方法的字符串是一个JSONArray,而不是一个JSONObject(括在[]括号而不是{}中),因此当你尝试解析并将其转换为JSONObject时会出现错误

JSONObject jObj = new JSONObject(response);行更改为JSONArray jArr = new JSONArray(response); - 这应解决问题。