Используя Gson для разбора JSON-массив
у меня есть 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;
}
но не повезло. Как еще я могу прочитать это, используя этот метод?
P. S у меня есть это для работы с помощью:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
но я бы предпочитаю знать, как это сделать (если это возможно) с помощью обоих методов.
3 ответов:
проблема вызвана запятой после последнего элемента вашего массива (после каждого
title). Если вы удалите его и измените свои данные на[ { "number": "3", "title": "hello_world" }, { "number": "2", "title": "hello_world" } ]
Wrapper[] data = gson.fromJson(jElement, Wrapper[].class);будет прекрасно работать.
Gson gson = new Gson(); Wrapper[] arr = gson.fromJson(str, Wrapper[].class); class Wrapper{ int number; String title; }вроде работает нормально. Но есть и дополнительный
,запятая в строке.[ { "number" : "3", "title" : "hello_world" }, { "number" : "2", "title" : "hello_world" } ]
public static <T> List<T> toList(String json, Class<T> clazz) { if (null == json) { return null; } Gson gson = new Gson(); return gson.fromJson(json, new TypeToken<T>(){}.getType()); }пример вызова:
List<Specifications> objects = GsonUtils.toList(products, Specifications.class);
Comments