java - Jackson - 反序列化 JSON 字符串 - TypeReference 与 T

要将 JSON 字符串反序列化为类列表,StackOverflow question 列出了不同的方法

类型 1 (docs link):

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

类型 2(docs link):

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

虽然上述两种类型都可以完成工作,但这些实现之间有什么区别?

最佳答案

在构造JavaType之后,两者都调用了相同的反序列化功能,所以唯一的区别是泛型类型的处理方式。

第二个是完全静态的,所以类型在编译类型中必须是已知的,并且不能变化。所以它类似于使用基本的类字面量。

第一个是动态的,因此可用于构造参数化不同的事物。

我个人更喜欢所有情况下的第一个替代方案(它避免创建一个匿名内部类),但第二个可能更具可读性。

关于java - Jackson - 反序列化 JSON 字符串 - TypeReference 与 TypeFactory.constructCollectionType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936620/

相关文章:

javascript - D3.js:使用图像(在数据中指定文件名)作为轴上的刻度值

javascript - 使用 jQuery 检查 JSON 对象中是否存在键

django - 使用 django 测试客户端发送 JSON

javascript - Ajax调用完成后执行函数

json - 如何将 Django 查询集输出为 JSON?

json - 如何将 JSON 文件导入 TypeScript 文件?

javascript - 有没有一种快速的方法可以在文本编辑器中将 JavaScript 对象转换为

ruby-on-rails-3 - 如何使用 ActiveModel::Serializers 为同

java - 如何将 JSON 字段名称映射到不同的对象字段名称?

python - 从文本文件中检索变量值的最佳方法?