JSON 正在解析错误正文(JSON 异常)org 。 json.JSONException: 在字符 0 输入结束

JSON Parsing on error body (JSON Exception) org . json.JSONException: End of input at character 0

我收到一个错误 org 。 json.JSONException: 输入结束于字符 0 这是我的代码:-

JSONObject jObjError = new JSONObject(response.errorBody().string());
Log.e("Error","::"+jObjError.getString("error_codes"));

这是我的 JSON

{
    "errors":{
        "provider":["already has an appointment scheduled at this time."]
    },
    "error_codes":["provider_unavailable"]
}

谁能帮我解决这个问题

这里的关键点是您试图从数组中获取字符串,而不是直接从对象中获取。正确的解析方式是:

JSONObject jObjError = new JSONObject(response.errorBody().string());
JSONArray errorArray = jObjError.optJSONArray("error_codes");
for(int i = 0;i<errorArray.size;i++) {
Log.e("Error","::"+errorArray.get(i));
}

如果 response 是您返回的 JSON,您应该直接将其作为参数传递,因为它的类型是 String

JSONObject jo=new JSONObject(response);

然后再做其他事情。因为您的错误消息是自定义的并作为 json 字符串返回,所以这被解释为带有自定义消息的成功请求。