【发布时间】:2019-06-20 00:30:00
【问题描述】:
我正在尝试反序列化我不拥有的类的对象。该类具有id_、address_、name_等属性名称,但其getter为getId()getAddress()getName()等。
当我尝试使用 Jackson 反序列化 JSON 时,我得到了
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "id_", not marked as ignorable
这似乎是因为 Jackson 正在寻找 getId_() 而不是 getId()。由于我不拥有底层类,因此我无法使用 Jackson 的注解将属性映射到自定义 json 字段。
如何使用对象属性到其 getter 方法的自定义映射来反序列化?
【问题讨论】:
-
或许可以试试 Jackson 的 JsonNode:tutorials.jenkov.com/java-json/jackson-jsonnode.html
-
不是一个完美的解决方案,但您可以创建自己的类,反序列化到该类并使其具有
toOriginalClass()方法。 -
您的 JSON 输入是什么样的?是
{"id":123, "name":"John Doe"}还是{"id_":123, "name_":"John Doe"}? -
@ThomasFritsch 后者。 JSON 看起来像
{"id_":123, "name_":"John Doe"} -
@korolar,希望尽可能避免这种情况。由于我们不拥有原始类,因此我不想与所有者可能做出的任何更改相结合
标签: java json jackson deserialization jackson-databind