包含数组的JSON对象到ArrayList <pojo>使用GSON

时间:2015-10-30 13:51:20

标签: java arrays json arraylist gson

我是JSON和GSON的新手,我从输入流中获取JSON提要,并将其放入自定义对象的数组列表中。 JSON提要包含单个对象,该对象包含更多对象的数组。它看起来像这样:

{ "container":[
    {"item_1":"item one"},
    {"item_2":"item two"},
    {"item_3":"item three"}
]}

我目前正在使用带有TypeToken的{​​{1}}来获取容器对象以及对象列表作为自定义对象的数组列表。像这样:

Map

我想知道是否有办法跳过创建InputStreamReader input = new InputStreamReader(connection.getInputStream()); Type listType = new TypeToken<Map<String, ArrayList<Item>>>(){}.getType(); Gson gson = new GsonBuilder().create(); Map<String, ArrayList<Item>> treeMap = gson.fromJson(input, listType); ArrayList<Item> objects = treeMap.get("container"); input.close(); 的步骤,并使用GSON直接从输入流转到Map<String, ArrayList<Item>>。只是为了巩固我的代码,创建一个地图似乎是一个不必要的步骤。

1 个答案:

答案 0 :(得分:1)

一个选项是定义一个包含container属性的包装器类型,然后将JSON反序列化为该类型而不是Map

public static class Wrapper {
    public List<Item> container;
}

Wrapper wrapper = gson.fromJson(input, Wrapper.class);
List<Item> objects = wrapper.container;