Jackson -正在反序列化JSON字符串- TypeReference与TypeFactory的比较,构造集合类型

nqwrtyyt  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(153)

将JSON字符串反序列化到一个类列表中,不同的方式列在StackOverflow question
类型1(docs link):

List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

类型2(文档链接):

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });

虽然上面的两种类型都能完成这项工作,但这两种实现之间有什么区别?

6mzjoqzu

6mzjoqzu1#

在构造JavaType之后,两者都调用相同的反序列化功能,因此唯一的区别是处理泛型类型的方式。
第二种是完全静态的,所以类型必须在编译类型中是已知的,并且不能变化。所以它类似于使用基本的类文本。
第一个是动态的,所以它可以用来构造参数化不同的东西。
就我个人而言,我更喜欢第一种选择(它避免了创建更多的匿名内部类),但第二种可能更可读。

w8rqjzmb

w8rqjzmb2#

另一种实现此目的的方法是:
List<SomeClass> list = Arrays.asList(mapper.readValue(jsonString, SomeClass[].class));

相关问题