这个问题可能看起来像一个重复的(它不是),但我被这个 JSONException 错误困住了:
Value die of type java.lang.String cannot be converted to JSONArray.
我正在使用 Volley
的 JsonArrayRequest
从服务器获取 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:
关于java - 如何在 Volley 中使用 JSONArrayRequest 发布参数 - (错误字符串无法转换为 jsonarray),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45832863/