我有一堂课,看起来像
class MyClass {
private byte[] payload;
public MyClass(){}
@JsonCreator
public MyClass(@JsonProperty("payload") final byte[] payload) {
this.payload = payload;
}
public byte[] getPayload() {
return this.payload;
}
}
我正在使用 Jackson 进行序列化然后反序列化。序列化工作正常,但在反序列化期间,我收到此错误消息 -
Cannot construct instance of `mypackage.MyClass` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
我在网上阅读了有关此问题的信息,并遇到了几篇建议使用默认构造函数或带有 @JsonCreator
注释的构造函数的文本。我尝试同时添加两者,但仍然出现该异常。我在这里错过了什么?
原文由 krackoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑:
我刚刚找到了一个更好的解决方案,将 ParanamerModule 添加到
ObjectMapper
:行家:
相对于 ParameterNamesModule 的优势似乎是不需要使用
-parameters
参数编译类。结束编辑
在 Jackson 2.9.9 中,我尝试反序列化这个简单的 POJO 并遇到了同样的异常,添加默认构造函数解决了这个问题:
POJO:
ObjectMapper 和序列化/反序列化:
JSON:
例外:
解决方案(使用默认构造函数的 POJO):