我有一个看起来像这样的地图:
public class VerbResult {
@JsonProperty("similarVerbs")
private Map<Verb, List<Verb>> similarVerbs;
}
我的动词类如下所示:
public class Verb extends Word {
@JsonCreator
public Verb(@JsonProperty("start") int start, @JsonProperty("length") int length,
@JsonProperty("type") String type, @JsonProperty("value") VerbInfo value) {
super(length, length, type, value);
}
//...
}
我想序列化和反序列化我的 VerbResult 类的实例,但是当我这样做时我得到这个错误: Can not find a (Map) Key deserializer for type [simple type, class my.package.Verb]
我在网上读到你需要告诉 Jackson 如何反序列化映射键,但我没有找到任何信息来解释如何去做这件事。 verb 类也需要在映射之外进行序列化和反序列化,因此任何解决方案都应保留此功能。
谢谢您的帮助。
原文由 Max 发布,翻译遵循 CC BY-SA 4.0 许可协议
基于 此处给出的答案,建议使用反序列化器实现模块。 JodaTime 模块 是一个易于理解的包含序列化器和反序列化器的模块的完整示例。
请注意,模块功能是在 Jackson 1.7 版中引入的,因此您可能需要升级。
所以一步一步:
mapper.registerModule(module);
一切就绪