jongo/jackson在java中反序列化scala.option
为像我一样被困的人找到了解决问题的方法!:强> 为了处理用于jackson反序列化的第三方java或scala对象,您可以使用mixin(但需要重新配置jackson映射器或用户模块) 或 您只需创建一个名为MyClassDeserializer的类来扩展JsonDeserializer 并使用@JsonDeserialize(使用=MyClassDeserializer.class)注释 例如: 这真的很简单,而且很有魅力!:)jongo/jackson在java中反序列化scala.option,java,serialization,jackson,option,jongo,Java,Serialization,Jackson,Option,Jongo,为像我一样被困的人找到了解决问题的方法!: 为了处理用于jackson反序列化的第三方java或scala对象,您可以使用mixin(但需要重新配置jackson映射器或用户模块) 或 您只需创建一个名为MyClassDeserializer的类来扩展JsonDeserializer 并使用@JsonDeserialize(使用=MyClassDeserializer.class)注释 例如: 这真的很简单,而且很有魅力!:) 公共类用户实现身份{ @JsonProperty(“\u id”)
公共类用户实现身份{
@JsonProperty(“\u id”)
私有字符串id;
@JsonDeserialize(使用=OptionDeserializer.class)
公开选择电子邮件;
}
公共类OptionDeserializer扩展了JsonDeserializer{
@凌驾
公共选项反序列化(JsonParser、JsonParser、反序列化上下文、反序列化上下文)引发IOException、JsonProcessingException{
//代码可以改进
ObjectCodec oc=jsonParser.getCodec();
JsonNode=oc.readTree(jsonParser);
return Option.apply(node.get(“email”).getText());
}
}
大家好,我在尝试用Jongo与jackson进行反序列化时遇到了一些麻烦
public class User implements Identity{
@JsonProperty("_id")
private String id;
public Option<String> email;
}
公共类用户实现身份{
@JsonProperty(“\u id”)
私有字符串id;
公开选择电子邮件;
}
Option是一种抽象类型,我对它很陌生,有没有办法告诉jackson如何翻译它
此用户对象已正确保存到mongo,但无法读取:/我花了这么多时间试图理解你们是我最后的选择!
谢谢(继续看)
原因:com.fasterxml.jackson.databind.JsonMappingException:Can
不构造scala.Option的实例,问题:抽象类型
需要映射到具体类型、具有自定义反序列化程序或
使用其他类型信息实例化
在[来源:de.underuch.bson4jackson.io。LittleEndianInputStream@6f255853;位置:
237](通过参考链:models.User[“email”])
将popo joe的答案作为答案发布: 为那些像我一样被困的人找到了解决问题的办法!:为了处理用于jackson反序列化的第三方java或scala对象,您可以使用mixin(但需要重新配置jackson映射器或用户模块),也可以简单地创建一个名为MyClassDeserializer的类,该类扩展JsonDeserializer并使用@JsonDeserialize(使用=MyClassDeserializer.class)注释 例如: 这真的很简单,而且很有魅力!:)
公共类用户实现身份{
@JsonProperty(“\u id”)
私有字符串id;
@JsonDeserialize(使用=OptionDeserializer.class)
公开选择电子邮件;
}
公共类OptionDeserializer扩展了JsonDeserializer{
@凌驾
公共选项反序列化(JsonParser JsonParser,
反序列化上下文(反序列化上下文)引发IOException,
JsonProcessingException{`
//代码可以改进`
ObjectCodec oc=jsonParser.getCodec();
JsonNode=oc.readTree(jsonParser);
return Option.apply(node.get(“email”).getText());
}
}
什么是类选项
以及它是否包含默认构造函数?hello Michal Option类是scala类:/我在java项目中使用的第三方数据库使用scala,我需要序列化一个包含选项字段的对象。thx michal我已经找到了问题的解决方案,并将其发布在我为futur撰写的第一篇文章中users@user2207996你应该把你的答案贴在下面,并接受它,这样问题就不会在列表中显示为未回答的问题。没问题。您可以将您的解决方案作为答案发布。这将是最清晰的方式。
public class User implements Identity{
@JsonProperty("_id")
private String id;
public Option<String> email;
}
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());
}
}