json Jackson序列化/反序列化私有构建器

u5i3ibmn  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(154)

我尝试使用Jackson序列化/反序列化DynamoDB Record类。
我无法控制这个类,所以我尝试使用Jackson mixins。
我做了以下工作:

@JsonDeserialize( builder = RecordBuilderMixIn.class )
private abstract static class RecordMixIn
{
}

@JsonPOJOBuilder( withPrefix = "" )
private abstract class RecordBuilderMixIn
{
}

var mapper = new ObjectMapper()
                .addMixIn( Record.Builder.class, RecordBuilderMixIn.class )
                .addMixIn( Record.class, RecordMixIn.class );

但是当我执行mapper.readValue(json, Record.class);时,我得到了以下错误:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Builder class `com.surecloud.jackson.RecordObjectMapper$RecordBuilderMixIn` does not have build method (name: 'build')

有什么解决办法吗?
谢啦,谢啦

0pizxfdo

0pizxfdo1#

在RecordBuilderMixIn中添加一个构造函数,对象Map器用于填充对象的反射需要该构造函数。

@JsonPOJOBuilder( withPrefix = "" )
private abstract class RecordBuilderMixIn {
    public RecordBuilderMixIn() {
        // constructor required by java reflection
    }
}

此外,停止在方法声明后添加新的curybracket行,这只会导致问题,因为没有现代编辑器使用这种风格。

相关问题