找到问题的解决方案对于像我一样被卡住的人!: 为了处理第三方 java 或 scala 对象以进行杰克逊反序列化,您可以使用 Mixins(但您需要重新配置杰克逊映射器或用户模块)或者您可以简单地创建一个名为 MyClassDeserializer 的类,该类扩展 JsonDeserializer 并使用 @JsonDeserialize(using = MyClassDeserializer.class) 注释。
例子:
它真的很简单,就像一个魅力!:)
public class User implements Identity{
@JsonProperty("_id")
private String id;
@JsonDeserialize(using = OptionDeserializer.class)
public Option<String> email;
}
public class OptionDeserializer extends JsonDeserializer<Option> {
@Override
public Option deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
//code can be improved
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
return Option.apply(node.get("email").getText());
}
}
大家好,我在尝试使用 Jongo 用杰克逊反序列化它时遇到了一些糟糕的事情
public class User implements Identity{
@JsonProperty("_id")
private String id;
public Option<String> email;
}
Option 是一种抽象类型,我对此很陌生,有没有办法告诉杰克逊如何翻译它?
此用户对象已正确保存到 mongo,但无法读取:/ 我花了很多时间试图理解你们是我最后的手段!谢谢(继续寻找)
原因:com.fasterxml.jackson.databind.JsonMappingException:无法构造 scala.Option 的实例,问题:抽象类型要么需要映射到具体类型,要么具有自定义反序列化器,要么在 [来源: de.undercouch.bson4jackson.io.LittleEndianInputStream@6f255853; pos:237](通过参考链:models.User["email"])