Volley返回JSONException:字符处未终止的对象

时间:2018-12-29 12:07:38

标签: android json laravel gson laravel-passport

我的应用收到错误JSONException: Unterminated character at ...,尽管它很常见,但它并不总是给出错误。

我不太确定这是代码还是与网络问题有关的东西,因为有时它确实工作得很好,有时却不能,即使从服务器发送的数据与它工作时的数据相同,并且如果没有的话。

我的过程是使用laravel以及使用API​​实现的laravel-passport来获取后端的帖子列表。

下面是我的laravel后端上的代码,但经过简化:

$response['posts'] = Post::all();
return response()->json($response);

在我的android应用程序上,我使用:

JSONArray jsonArrayPosts = response.getJSONArray("posts");

在我使用排球的所有网络请求上,我都有以下标头:

Map<String, String> params = new HashMap<>();
params.put("Accept", "application/json");
params.put("Authorization", "Bearer " + UserSingleton.getInstance().getUser().getAccess_token());
return params;

它可以工作,但是很常见,我在凌空抽空时收到网络错误

JSONException: Unterminated character at ...

我得到不一致的结果可能是什么问题?

1 个答案:

答案 0 :(得分:0)

尝试以下流程,
1.分配标头授权,不带承载字和字符串值令牌。
2.在json对象中收集响应。
JsonObject jO_One=new JsonObject(response);
3.您需要一个json数组对象。
JsonArray jA_One=jO_One.getJsonArray("ArrayName");
4.为数组数据收集应用循环

    for(int i=0;i<jA_One.length;i++){  
        JsonObject jO_Two=new JsonObject(i);  
    // collect your values from keys
    int mobile=jO_Two.getInt("mobiles");  
    // now, you can store it into your  
 //arraylist or whatever you are using in here...   
    }  

5。完成。