当前位置: 首页 > 知识库问答 >
问题:

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

桓瀚
2023-03-14

这个问题看起来可能是重复的(不是),但我被这个JSONException错误所困扰:

类型为 java.lang.String 的值 die 无法转换为 JSON 数组。

我正在使用< code >凌空的< code>JsonArrayRequest从服务器获取jsonarray。我的< code>JsonArrayRequest抛出了上面的错误,因为我想< code>post一个字符串到服务器并接收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块中的某个地方。使用StringRequest而不是JsonArrayRequest时,同一块工作得很干净。

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

编辑

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

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

共有1个答案

阳宗清
2023-03-14

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

new JSONArray(response);

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

发送简单的请求

 类似资料:
  • 问题内容: 我是Json解析的新手。我正在尝试使用读取json数据,但是在发送参数和使用POST方法时我有点困惑。在我可以发送方法类型,URL,参数的情况下,但是在如何发送诸如用户名和密码之类的参数时,我使用POST方法。请帮帮我。这是我编写的代码。 我的json数据就像: 参数未发送。请帮我解决这个问题。先感谢您。 问题答案: 当使用JsonArrayRequest和POST方法时,这解决了我传

  • 问题内容: 我需要使用JSONObject发出请求,如下所示: 预期的响应是JSONArray。使用Volley,我无法使用JSONObject参数创建JsonArrayRequest。 在以这种方式发出请求之前: 但是现在是JSONObject包含JSONObject。 现在如何使用Volley发出此请求? 问题答案: 我创建了一个自定义齐射请求,该请求接受JSONObject作为参数。 Cus

  • 给定数字的字符串表示形式,如何将其转换为TypeScript中的类型?

  • 问题内容: 我想这些类型的值,转换的,,等多项。在JavaScript中,我们可以使用,但是PHP中有可用的类似方法吗? 问题答案: 通常不需要这样做,因为PHP在大多数情况下都会为您强制类型。对于那些你想显式转换型的情况下,_投_它:

  • 问题内容: 我可以将表示布尔值(例如,“ true”,“ false”)的字符串转换为JavaScript中的固有类型吗? 我有一个隐藏的HTML表单,可根据用户在列表中的选择进行更新。此表单包含一些表示布尔值的字段,并使用内部布尔值动态填充。但是,一旦将此值放入隐藏的输入字段中,它将成为一个字符串。 确定字段的布尔值(将其转换为字符串后)的唯一方法是依赖于其字符串表示形式的文字值。 有没有更好的