我试图实现的是在自定义反序列化器中将JsonNode转换为POJO(=反序列化它)。
大多数其他答案建议使用对象映射器,但我在反序列化方法中没有对象映射器。
这是我的自定义反序列化程序:
class AccountDeserializer extends StdDeserializer<Input> {
public AccountDeserializer() {
this(null);
}
public AccountDeserializer(Class<?> vc) {
super(vc);
}
@Override
public Account deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
JsonNode root = jp.getCodec().readTree(jp);
User user = root.get("user").????;
// other statements
Account acc = new Account(user);
return acc;
}
}
(用户是一个简单的类)
您可以像这样使用JsonParser中的ObjectCodec:
jp.getCodec().treeToValue(root.get("user"), User.class)
这将根据任何其他现有序列化规则返回您的用户对象。
感谢@galcyurio在将JsonNode转换为POJO中的评论:
您还可以在StdDeserializer:p.codec中使用此方法。树形值
类似于将JsonNode转换为POJO和将JsonNode转换为java array,但无法找到问题的确切解决方案。 以下是我的POJOs声明: 所以在我的测试中,我想得到一个建筑列表,并将json列表转换/绑定到一个真实对象建筑列表。 以下是我想做的: 但是,我得到以下错误: 显然,如果我在Building类中删除了构造函数,并为字段类型添加了setter,它就会起作用。但是如果我确实有一个要求
问题内容: 这似乎有点不正常,但我在寻找一个有效的方式来变换/映射成。 我将模型的一些信息存储在json文件中,并且我必须支持模型的几个版本。 我要做的是将json文件加载到JsonNode的内存中,应用一些版本控制策略以使其与我的Model的最新版本匹配。 除非有更快的方法,否则我可能最终将手动将其应用于模型 问题答案: 在Jackson 2.4中,可以进行如下转换: 杰克逊在哪儿? 在旧版的J
我正在使用Spring Kafka集成,我有自己的值通用序列化器/反序列化器,如下所示 序列化程序: 反序列化程序: 序列化程序工作得很好,但是当涉及到在消费消息时反序列化值时,我得到了一个而不是所需的对象,请告诉我我错在哪里,提前感谢。
我有一个Websocketendpoint,我想作为头值接收它,不是字符串,而是对象。 你知道怎么做吗?
我想反序列化表单中的类: 其中文本是加密的,反序列化应该在重建TestFieldEncryptedMessage实例之前取消对值的加密。 我采用的方法非常类似于:https://github.com/codesqueak/jackson-json-crypto 也就是说,我正在构建一个扩展SimpleModule的模块: 如您所见,设置了两个修饰符:EncryptedSerializerModif
我有一个POJO类,它将从JSON反序列化,JSON在Spring中作为请求体出现。此POJO类包含列表 我的JSON对象如下所示 下面是示例方法调用 我遵循了给出的建议,下面给出了反序列化程序代码