gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:25 27 4
gpt4 key购买 nike

在使用 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/

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