使用 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
的实例(尽管至少存在一个创建者):无法从对象值反序列化(没有委托或基于属性的创建者) 在[源:(String)“ {”name“:“test”}”;行:1,列:2]
我的目标是配置对象映射器以成功反序列化对象,而不使用MyClass构造函数上的JsonCreator或JsonProperties等注释:
- 这可行吗?
- 我缺少哪些配置?
非常感谢!
编辑1:@Dean的回复解决了问题。但我想避免默认构造函数。
name
字段应该是final! - scibuff