У меня есть такой файл JSON:
[
{
"number": "3",
"title": "hello_world",
}, {
"number": "2",
"title": "hello_world",
}
]
Раньше, когда у файлов был корневой элемент, я использовал:
Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);
код, но я не могу придумать, как закодировать Wrapper
класс, поскольку корневой элемент - это массив.
Я пробовал использовать:
Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);
с участием:
public class Wrapper{
String number;
String title;
}
Но не повезло. Как еще я могу прочитать это с помощью этого метода?
PS У меня это работает, используя:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
Но я бы предпочел знать, как это сделать (если возможно) обоими методами.
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);
у меня все нормально.Ответы:
Проблема вызвана запятой в конце (в вашем случае каждого ) объекта JSON, помещенного в массив:
Если вы удалите их, ваши данные станут
и
должно работать нормально.
источник
jackson
библиотеки и этого комментария создание массива и его упаковкаArrays.asList(..)
выполняется быстрее, чем создание списка с использованием TypeRefence. Я не тестировал его с помощьюgson
библиотеки, но, возможно, стоит протестировать его.Вроде нормально работает. Но
,
в вашей строке есть лишняя запятая.источник
образец звонка:
источник
GsonUtils
это класс, в который он поместил свой собственныйtoList()
метод.источник