我有这样的Json响应:
List<CDR> cdrs = Arrays.stream(files)
.parallel()
.map(this::readCDR)
.collect(Collectors.toList());
上面的JSON响应将通过POST调用获得。在android使用volley库我做了一个REST调用如下:
{
"status" : "CREATED",
"message" : "user created",
"results" : [
{
"id" : "1243233",
}
]
}
我收到错误JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Request", response.toString());
try {
response.getString("status");
JSONArray array = response.getJSONArray("results");
JSONObject id = (JSONObject)array.get(0);
Toast.makeText(getApplicationContext(),response.getString("status"),Toast.LENGTH_LONG).show();
} catch (JSONException e) {
e.printStackTrace();
}
pDialog.hide();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Request", "Error: " + error.getMessage());
pDialog.hide();
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("phone", phone);
params.put("name", username);
params.put("pwd",password);
params.put("email", email);
return params;
}
};
AppController.getInstance().addToRequestQueue(jsonObjReq);
org.json.JSONException: Expected literal value at character 102 of
请帮我解决这个问题。
答案 0 :(得分:1)
结果数组的项目中有逗号。这意味着应该有另一个元素(字符串,整数等)作为JSONObject(结果数组的第一项)的一部分。
因此,您收到了JSON解析错误。
"results" : [
{
"id" : "1243233",
}
]
应该是
"results" : [
{
"id" : "1243233"
}
]
删除逗号