Используя библиотеку Gson, как мне преобразовать строку JSON ArrayList
в пользовательский класс JsonLog
? По сути, JsonLog
это интерфейс, реализованный различными типами журналов, созданных моим Android-приложением - журналы SMS, журналы вызовов, журналы данных - и это ArrayList
коллекция всех из них. Я продолжаю получать сообщение об ошибке в строке 6.
public static void log(File destination, JsonLog log) {
Collection<JsonLog> logs = null;
if (destination.exists()) {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader(destination));
logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6
// logs.add(log);
// serialize "logs" again
}
}
Кажется, компилятор не понимает, что я имею в виду типизированный ArrayList
. Что мне делать?
Ответы:
Вы можете использовать TypeToken для загрузки строки json в пользовательский объект.
Документация:
Котлин:
Если вам нужно сделать это в Kotlin, вы можете сделать это так:
Или вы можете увидеть этот ответ для различных альтернатив.
источник
{ }
ранее.getType()
Ваш образец JSON:
так что если вы хотите сохранить массив модулей в ваших SharedPrefferences так:
1- преобразует ваш возвращенный массив для формата json, используя этот метод
2- Сохраните его в общих настройках
3 - чтобы получить его в любое время, получите JsonString из общих настроек
4 - преобразовать его снова в список массивов
Это решение также выполнимо, если вы хотите проанализировать ArrayList объектов. Надеюсь, это поможет вам с помощью библиотеки Gson .
источник
Если вы хотите использовать массивы, это довольно просто.
Предоставить
JsonLog
как массивJsonLog[].class
источник
ИЛИ
источник
Почему никто не написал этот простой способ преобразования строки JSON в List ?
источник
Я не уверен насчет gson, но вот как вы делаете это с Jon. Образец надеюсь, что с gson должен быть похожий способ
{"Players": ["player 1", "player 2", "player 3", "player 4", "player 5"]}
===============================================
источник
У вас есть такая строка .
Затем вы можете преобразовать его в ArrayList через Gson, как
Вашему классу HotelInfo это должно понравиться.
источник