Volley возвращает JSONException: неопределенный объект в символ - PullRequest
0 голосов
/ 29 декабря 2018

Мое приложение получает ошибку JSONException: Unterminated character at ... Но оно не всегда выдает ошибку, хотя это очень часто.

Я не совсем уверен, что это код или что-то, связанное с проблемой сети, потому чтоиногда это работает очень хорошо, иногда нет, даже если данные, отправляемые с сервера, такие же, как когда они работают, а когда нет.

Мой процесс - получить список сообщенийна бэкэнде, используя laravel, с laravel-passport, реализованным с помощью API.

Ниже приведен код на моем бэкэнде 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 голосов
/ 29 декабря 2018

Попробуйте этот поток,
1. Назначьте авторизацию заголовка без слова Bearer и токена строкового значения.
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.Готово.

...