gpt4 book ai didi

java - 通过Gson lib从json文件获取对象,有java.lang.UnsupportedOperationException错误

转载 作者:行者123 更新时间:2023-12-01 11:03:08 25 4
gpt4 key购买 nike

我的代码使用 Gson lib 将 .json 文件转换为 Java 模型,代码如下:

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

此错误是由于转换造成的。搜索后我找不到比这段代码更好的了。我不知道出了什么问题?感谢您提供解决问题的指导。

编辑:开发者.json ->

[
{
"name": "mkyong",
"age": 120,
"salary": 1555002
},
{
"name": "amir",
"age": 20,
"salary": 3000000
}
]

和Developer.java ->

public class Developer {

private String name;
private BigDecimal salary;
private Integer age;

...
getters and setters
}

最佳答案

抛出异常是因为 Gson 正在创建 emptyList() 返回的 List 类型的实例,然后尝试向其中添加元素。该方法返回的列表类型为immutable ,这会导致 UnsupportedOperationException

您应该使用 TypeToken 来反序列化泛型类型,而不是使用 emptyList().getClass(),如 Gson user guide 中所述。 .

Type listType = new TypeToken<List<Developer>>() {}.getType();
List<Developer> devList = new Gson().fromJson(br, listType);

关于java - 通过Gson lib从json文件获取对象,有java.lang.UnsupportedOperationException错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33185804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com