我需要将 yml
文件反序列化为没有默认构造函数的 Java 对象。这会导致 Jackson 的 ObjectMapper 提示并抛出异常。
特别是 Java 类不是我自己的(它是一个依赖项),因此我无法修改它。作者对该类的想法是使用Builder Pattern构造对象,并没有提供默认的构造函数。
为了避免这个问题,我想我需要创建一个适配器类。然后,我将使用序列化的适配器对象并填充构建器来构建我的对象。
有没有更干净的方法来做到这一点?如果只有 ObjectMapper 提供从流读取到特定对象的方法,我可以使用构建器创建一个空对象,然后用 Jackson 填充它......
最佳答案
这只是 @Steve11235 评论的扩展版本。
这不是适配器, 这只是一种解决方法。
- 创建一个与JSON格式匹配的类;我将其称为
Blammy
。 - 在
Blammy
类中包含一个方法,以填充所需实际类的构建器;我将其称为Blammy.builderate(DesiredBuilder)
- 使用 jackson 将 JSON 反序列化到
Blammy
类中。 - 反序列化后,创建所需的 Builder 并将其传递给
Blammy.builderate()
方法。
关于java - Jackson ObjectMapper 将值读取到特定的 Java 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54024452/