当前位置: 首页 > 面试题库 >

Jackson-反序列化JSON字符串-TypeReference与TypeFactory.constructCollectionType

钱安和
2023-03-14
问题内容

类型1(docs链接):

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

类型2(docs链接):

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

尽管以上两种类型都能完成任务,但这些实现之间有什么区别?


问题答案:

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

第二个是完全静态的,因此类型必须在编译类型中是已知的,并且不能改变。因此,它类似于使用基本Class文字。

第一个是动态的,因此可以用于构造因其参数设置而变化的事物。

就我个人而言,我更喜欢在所有情况下都采用第一种方法(它避免了创建另一个匿名内部类),但是第二种方法可能更具可读性。



 类似资料:
  • 问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么

  • 我有以下由Jackson映射的类(简化版): 在某些情况下,服务器返回,然后我想将name设置为空Java字符串。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串吗?

  • 我正在尝试使用Jackson将反序列化为,但它不起作用。 我有一个带有LocalDateTime字段的数据类: 我添加了特殊的Jackson数据类型模块: 序列化可以在以下情况下正常工作: 结果字符串: 但反序列化不适用于: 作为错误,我得到: 我错过了什么?我对串行化有效而反序列化无效感到困惑。 MWE:(小格拉德尔Java项目) Main.java: build.gradle:

  • 本文向大家介绍C#实现JSON字符串序列化与反序列化的方法,包括了C#实现JSON字符串序列化与反序列化的方法的使用技巧和注意事项,需要的朋友参考一下 C#将对象序列化成JSON字符串 这里主要是使用JavaScriptSerializer来实现序列化操作,这样我们就可以把对象转换成Json格式的字符串,生成的结果如下: 如何将Json字符串转换成对象使用呢? 在实际开发中,经常有可能遇到用JS传

  • 问题内容: 我有这个字符串: 我正在反序列化对象: 该对象看起来像: 并尝试创建字典: 但得到。 可能是什么问题? 问题答案: 请参阅mridula的答案,了解为什么您会得到null。但是,如果您想直接将json字符串转换为字典,则可以尝试以下代码段。

  • 有没有一种方法可以正确地反序列化以双引号开头和结尾的JSON字符串? 数据以流的形式输入(来自AWS S3对象)。这是流的内容(注意开头和结尾的双引号字符): JsonSerializer似乎没有正确地反序列化它。但是,对于以下内容,其工作原理与预期一致: 以下是片段: