如何使用GSON将数据解析并放入对象列表中?

9

我是一个领域对象Foo,我想解析一些JSON,例如

[
    {"prop": "val"},
    {"prop": "val2"},
]

我想获取一个 List<Foo>。就像这样。

List<Foo> foos = new Gson().fromJson(json, /*what goes here ?*/);

你还在使用JDK 1.4吗?Type自JDK 1.5开始引入。 - yorkw
我甚至不记得我安装了什么,但肯定是在最近一个月内。编译器显示1.6。 - Adam
我使用了import java.lang.reflect.Type;来解决那个问题。现在第二行出现了一个错误,说我需要添加SuppressWarnings,但它并没有起到任何作用。 - Adam
这不是一个错误,只是一个警告,请忽略它。 - yorkw
1个回答

18

您需要使用TypeToken来正确表示类型。在这种情况下,Class是不够的,因为它与泛型类型相互作用。

Type listType = new TypeToken<List<Foo>>(){}.getType();
List<Foo> projects = (List<Foo>) gson.fromJson(response, listType);

如果项目包含私有字段并且我有getter和setter方法,那会怎样?它仍然可以工作吗?Gson是否自动查找这些方法? - Adam
你所描述的正是构建领域类的正确方式,GSON会从那一点开始处理所有内容(getter和setter)。 - yorkw
这段代码出现了很多错误,我可能没有导入正确的库。它让我“创建方法getType()”。现在它消失了,似乎与Type有关。 - Adam
请确保您正在使用最新的jar文件,并查看API com.google.gson.reflect.TypeToken<T> - yorkw
是的,我已经有了最新的JAR包。我认为错误与类型有关。Eclipse根本没有识别它。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接