如何修复“不是原始数组”

How fix " Not a primitive array"

我正在尝试解析这个 json。

[
    {
        "id": 2,
        "name": "612",
        "code": "auditorium 612"
    },
    {
        "id": 3,
        "name": "613",
        "code": "auditorium 613"
    }
]

JSONException returns 错误“不是原始数组”。我尝试解析 JsonObjectRequest,但出现了另一个错误。最后我来到选项 JsonArrayRequest

W/System.err: org.json.JSONException: Not a primitive array: class org.json.JSONArray
        at org.json.JSONArray.<init>(JSONArray.java:116)
        at com.example.dyplom.MainActivity.onResponse(MainActivity.java:126)
        at com.example.dyplom.MainActivity.onResponse(MainActivity.java:122)
        at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:90)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at android.os.Handler.handleCallback(Handler.java:790)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err:     at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

这是解析器方法。

private void loadStrings()
    {
        String url_head = "http://10.0.2.2:8080/rStrings";
        JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET,url_head, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                try {
                    JSONArray jsonArray_string_list = new JSONArray(response);
                    main_name_rString = new String[jsonArray_string_list.length()];
                    main_code_rString = new String[jsonArray_string_list.length()];
                    for (int i = 0; i < jsonArray_string_list.length();i++){
                        JSONObject string_params_string_list = jsonArray_string_list.getJSONObject(i);

                        Long string_id = string_params_string_list.getLong("id");
                        String string_name = string_params_string_list.getString("name");
                        String string_code = string_params_string_list.getString("code");

                        main_id_rSting[i]=string_id;
                        main_name_rString[i] = string_name;
                        main_code_rString[i] = string_code;

                        Log.i("Id", String.valueOf(main_id_rSting[i]));
                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
                error.printStackTrace();
            }
        });
        mQueue.add(request);
    }

我看了类似的问题,但我没有真正找到任何东西。我该如何解决?可能我没看懂。

如果 onResponse 方法已经收到(JSONArray 响应),则无需在代码的下一行中再次创建新的 JSONArray。如果我能看到发生错误的行,那将会有所帮助。