当前位置: 首页 > 知识库问答 >
问题:

在自定义反序列化器中将JsonNode转换为POJO[重复]

琴宾鸿
2023-03-14

我试图实现的是在自定义反序列化器中将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;
    }
}

用户是一个简单的类)


共有1个答案

宇文飞羽
2023-03-14

您可以像这样使用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

  • 我有一个JestClient(elasticsearch)响应,我试图将其反序列化为一个对象。该对象包含两个DateTime字段,而在响应中,它们是字符串,因此我得到: 所以,我创建了一个自定义反序列化器来解决这个问题…然而,无论我做什么,我总是得到同样的错误。不知何故它没有注册使用它? 最后,我试图解析JestClient响应的代码: 无论我尝试什么,我总是得到上面的错误,我甚至不确定在这一点上