Gson от Json вызывает IllegalStateException при инициализации - PullRequest
0 голосов
/ 23 апреля 2020

Я храню ArrayList (от Gson до Json), чтобы я мог поместить его в общие настройки (это единственный способ, которым я знаю, как это сделать). Проблема заключается в первой инициализации приложения, Gson из Json аварийно завершает работу с IllegalStateException (ожидаемый BEGIN_ARRAY, но был STRING в строке 1, путь 1, столбец $). Я уверен, что я знаю, что это вызвано получением общих настроек с помощью значение по умолчанию (строки), и их нельзя «десериализовать» обратно в массивы ... но я не знаю, как его обойти. Это два моих метода, которые отлично работают, когда в массивах есть данные для хранения и извлечения.

public void gsonFromJson() {
    String monthlyEmailList = dailySharPref.getString("monthlyEmailList", "no data");
    String totalHrsList = dailySharPref.getString("totalHrsList", "0");
    Type type1 = new TypeToken<ArrayList<String>>() {
    }.getType();
    Type type2 = new TypeToken<ArrayList<Integer>>() {
    }.getType();
    monthlyEmailArray = gson.fromJson(monthlyEmailList, type1);
    totalHoursArray = gson.fromJson(totalHrsList, type2);
}

public void gsonToJson() {
    String monthlyEmailList = gson.toJson(monthlyEmailArray);
    String totalHrsList = gson.toJson(totalHoursArray);
    dailySharPrefEditor.putString("monthlyEmailList", monthlyEmailList);
    dailySharPrefEditor.putString("totalHrsList", totalHrsList);
    dailySharPrefEditor.putBoolean(hasStarted, isDayStarted());
    dailySharPrefEditor.putBoolean(hasEnded, isDayEnded());
    dailySharPrefEditor.apply();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...