我的代码使用Gson lib将Convert .json文件转换为具有以下代码的Java Model:
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(
new FileReader("C:\\developers.json"));
List<Developer> devList = new Gson().fromJson(br, Collections.<Developer>emptyList().getClass());
for (Developer d : devList) {
System.out.println(d.getAge());
}
}
发生错误,请参考fromJson
Exception in thread "main" java.lang.UnsupportedOperationException
此错误适用于投射。搜索后我发现比这段代码更好。 我不知道出了什么问题? 感谢您解决问题的任何指导。
修改 developers.json - &gt;
[
{
"name": "mkyong",
"age": 120,
"salary": 1555002
},
{
"name": "amir",
"age": 20,
"salary": 3000000
}
]
和Developer.java - &gt;
public class Developer {
private String name;
private BigDecimal salary;
private Integer age;
...
getters and setters
}
答案 0 :(得分:1)
抛出异常是因为Gson正在创建emptyList()
返回的List类型的实例,然后尝试向其添加元素。此方法返回的列表类型为immutable,这会导致UnsupportedOperationException
。
不应使用emptyList().getClass()
,而应使用TypeToken
反序列化泛型类型,如Gson user guide中所述。
Type listType = new TypeToken<List<Developer>>() {}.getType();
List<Developer> devList = new Gson().fromJson(br, listType);