java - 如何在 Volley 中使用 JSONArrayRequest 发布参数 - (错误字符串无法转换为 jsonarray)

标签 java android

这个问题可能看起来像一个重复的(它不是),但我被这个 JSONException 错误困住了:

Value die of type java.lang.String cannot be converted to JSONArray.

我正在使用 VolleyJsonArrayRequest 从服务器获取 jsonarray。我的 JsonArrayRequest 抛出上述错误,因为我想向服务器发布 一个字符串并接收 jsonarray 作为响应。下面是我的代码:

JsonArrayRequest jsonReq = new JsonArrayRequest(Request.Method.POST,
            URL, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            // Parsing json
            for (int i = 0; i < response.length(); i++) {
                try {
                    JSONObject JO = response.getJSONObject(i);
                    GetterSetter getterSetter = new GetterSetter();

                    getterSetter.setName(JO.getString("name"));
                    getterSetter.setNumber(JO.getString("number"));
                    getterSetter.setDate(JO.getString("date"));

                    myList.add(getterSetter);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            myAdapter.notifyDataSetChanged();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("myKey", myValue);

            return params;
        }
    };
    MySingleton.getInstance().addToRequestQueue(jsonReq);
}

PHP 文件运行正常,正在将 json 字符串传递给 android。

错误发生在 onResponse block 中的某处。当使用 StringRequest 而不是 JsonArrayRequest 时,相同的 block 可以正常工作。

知道究竟是什么导致了这个错误吗?非常感谢任何帮助或指导。 * 我是 Android Volley 及其工作方式的新手。

编辑

这是 url 响应的格式/语法:

[
    {"name":"test",
     "number":"123",
     "date":"2017-08-22"
    },
    {"name":"test1",
     "number":"1234",
     "date":"2017-08-23"
    }
]

最佳答案

尝试使用 StringRequest,然后根据响应字符串创建您自己的 JSONArray:

new JSONArray(response);

您可以从文档中找到示例 StringRequest:

Sending a Simple Request

关于java - 如何在 Volley 中使用 JSONArrayRequest 发布参数 - (错误字符串无法转换为 jsonarray),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45832863/

相关文章:

java - sun.reflect.annotation.TypeNotPresentExceptionProxy - 在 weblogic 上部署 SOAP web 服务

java - 如何将字符串转换为 GZIP Base64 字符串?

java - 应用程序无法加载 applicationContent.xml。为什么?

android - 如何使用 Eclipse 导出 APK 文件?

java - Android SQLite数据库删除行NullPointerException

java - 从 Internet 加载数据时显示进度对话框

android - 如何从触摸android检测手指的类型,例如拇指,食指,中指,无名指,小指

java - 如何将 SQLite 数据库数据传递给 Activity 并为该数据增值?

java - 在设置为 ImageView 之前在哪里调用 Crop Image

android - Android App 中的 Activity 数量是否重要?