为那些像我一样被困的人找到了解决问题的办法!:为了处理用于jackson反序列化的第三方java或scala对象,您可以使用mixin(但需要重新配置jackson映射器或用户模块),也可以简单地创建一个名为MyClassDeserializer的类,该类扩展JsonDeserializer并使用@JsonDeserialize(使用=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与jackson进行反序列化时遇到了一些麻烦
public class User implements Identity{
@JsonProperty("_id")
private String id;
public Option<String> email;
}
选项是一个抽象的类型,我对这个真的很陌生,有没有办法告诉杰克逊如何翻译它?
此用户对象已正确保存到mongo,但无法读取:/我花了这么多时间试图理解你们是我最后的选择!谢谢(继续看)
原因:com.fasterxml.jackson.databind.JsonMappingException:无法构造scala的实例。选项,问题:抽象类型需要映射到具体类型,具有自定义反序列化器,或者在[Source:de.underuch.bson4jackson.io]处使用其他类型信息进行实例化。LittleEndianInputStream@6f255853;位置:237](通过参考链:models.User[“email”])
发布popo joe的答案作为答案:
为那些像我一样被困的人找到了解决问题的办法!:为了处理用于jackson反序列化的第三方java或scala对象,您可以使用mixin(但需要重新配置jackson映射器或用户模块),也可以简单地创建一个名为MyClassDeserializer的类,该类扩展JsonDeserializer并使用@JsonDeserialize(使用=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());
}
}
我刚刚开始使用play框架jongo和MongoDB开发一个项目。该项目最初是在Play 2.1中使用POJO编写的,POJO带有一个字符串id字段,该字段用@id和@ObjectId注释。这将作为ObjectId保存到Mongo,反序列化时将id输出为:“id”:“53fcb9ede4b0b18314098d10”例如。 由于升级到Jongo 1.1和Play 2.3.3,反序列化时id属性始终
我在试着读我的。json文件。Is是一个车辆存储类。 这是错误: com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造的实例(尽管至少存在一个Creator):无法构造的实例(尽管至少存在一个Creator):没有字符串参数构造函数/工厂方法来从[Source:(File); line: 1,列: 1]处的字符串值反序列化
我想反序列化表单中的类: 其中文本是加密的,反序列化应该在重建TestFieldEncryptedMessage实例之前取消对值的加密。 我采用的方法非常类似于:https://github.com/codesqueak/jackson-json-crypto 也就是说,我正在构建一个扩展SimpleModule的模块: 如您所见,设置了两个修饰符:EncryptedSerializerModif
问题内容: 我无法找出使用杰克逊实现自定义序列化/反序列化的正确方法。我有很多类(〜50),它们带有应被序列化/反序列化而不是原始的原始字段。喜欢: 所有序列化和反序列化都非常相似,我只需要在整数之后添加一个后缀(C,页面,米等)。 一种简单的方法是在每个这样的字段中添加一对/ 注释并实现它们。但是我最终会得到100个 非常相似的 序列化器/反序列化器。 我想到了添加自定义注释的各个领域,说或,这
可以序列化/反序列化< code >映射吗 在这种特殊情况下,我知道总是,和 - 第三方类(我有序列化器和反序列化器),其他值是盒装原语。 有可能和杰克逊做这样的事吗?使用MapSerializer/MapDeserializer可以做到这一点吗?(我找不到任何例子)
我对Jackson有一个错误的理解,就是将json文件反序列化为poco。这是我的代码: 我的POCO命名为AnimalBean: }还有我的JSON文件: } 当我执行我的代码时,我有以下错误:未识别的字段“动物园”(类动画豆),未标记为可忽略的。我知道问题是我的json文件开始不直接由动物,但我不能改变它,因为它不是我的。我已经尝试把对象apper.configure(Deseriazatio