使用 writeValueAsString 序列化对象后,Jackson 反序列化失败

使用 com.fasterxml.jackson.databind.ObjectMapper 类(com.fasterxml.jackson.core:jackson-databind:2.9.5) 我试图反序列化以下类的对象:


class MyClass {


    String name;


    MyClass(String name) {

        this.name = name;

    }

}

我目前正在执行的代码如下:


    MyClass myClass = new MyClass("test");

    objectMapper.registerModule(new ParameterNamesModule())

        .registerModule(new Jdk8Module())

        .registerModule(new JavaTimeModule())

        .configure(FAIL_ON_UNKNOWN_PROPERTIES, false)

        .setVisibility(PropertyAccessor.FIELD, Visibility.ANY);


    String text = objectMapper.writeValueAsString(myClass);

    objectMapper.readValue(text, MyClass.class);

在抛出异常的最后一行失败:


com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造实例com.pckge.MyClass(尽管至少存在一个创建者):无法从 [Source: (String)"{" 处的对象值(无基于委托或基于属性的创建者)反序列化名称":"测试"}"; 行:1,列:2]


我的目标是配置对象映射器,以便在不使用 MyClass 构造函数上的 JsonCreator 或 JsonProperties 等注释的情况下成功反序列化对象:


这是可行的吗?

我缺少哪个配置?

非常感谢!



慕后森
浏览 1427回答 3
3回答

HUWWW

如果您使用 lombok 删除类的 @Builder 注释,是我的问题
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java