使用GSONparsingJSON数组
我有一个像这样的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");
但我宁愿知道如何使用这两种方法(如果可能)。
问题是由数组的最后一个元素(每个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; }
似乎工作正常。 但是在你的string中有一个额外的逗号。
[ { "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);