我是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>>
。只是为了巩固我的代码,创建一个地图似乎是一个不必要的步骤。
答案 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;