java - 如何使用 Jackson 以自定义方式实例化 bean?

标签 java json jackson

在使用 Jackson 库从 JSON 反序列化时,以自定义方式(而不是通过调用默认构造函数)实例化 bean 的最佳和最简单方法是什么?我发现我可以实现 JsonDeserializer 接口(interface),但我不太确定如何将它们连接到 ObjectMapper 中。

更新 #1:我认为我的问题需要更多详细信息。默认情况下,Jackson 的反序列化器使用默认构造函数来创建 bean。我希望能够通过调用外部工厂来实现 bean 的实例化。所以我需要的只是一个需要实例化的bean类。工厂将返回实例,然后可以将实例提供给 Jackson 进行属性填充等。

请注意,我不关心创建简单/标量值(如字符串或数字),只有 bean 在我的兴趣范围内。

最佳答案

一些可能有帮助的事情......

首先,您可以使用@JsonCreator 来定义要使用的备用构造函数(所有参数都必须使用@JsonProperty 进行注释,因为字节码没有名称),或静态工厂。它仍然是值类的一部分,但可以帮助支持不可变对象(immutable对象)。

其次,如果你想要真正自定义的反序列化过程,你可以查看https://github.com/FasterXML/jackson-docs/wiki/JacksonHowToCustomSerializers其中解释了如何注册自定义反序列化器。

Jackson 目前遗漏的一件事是对构建器样式对象的支持;存在添加支持的功能请求(并且计划在开发人员有时间后在将来添加支持)。

关于java - 如何使用 Jackson 以自定义方式实例化 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700286/

相关文章:

java - Hadoop 文件开头附加的奇怪字符

javascript - 从 Array Variable React 中获取 JSON 数据

java - 让Spring使用Jackson在GET端点中转换JSON编码的@RequestParam

java - 滚动 java TextArea 的问题

java - 为什么我使用 try catch 时会出现错误

具有自定义字段表示的 json django 模型

java - 如何使用 jackson 将 JSON 数组反序列化为 HashMap?

java - 在序列化和反序列化期间从 Java POJO 获取选定字段

java - 找不到文件异常,仅当将代码包含为 Maven 依赖项时

javascript - jquery转json的问题