【发布时间】:2013-09-25 15:19:47
【问题描述】:
我需要反序列化以下json:
{
//...
"foo_id":1
//...
}
进入类 Foo 的对象,其 id 属性设置为 foo_id json 属性。
我需要在自定义反序列化器中执行此操作。 最简单的方法是什么?
我正在考虑以某种方式将 json “转换”为
{
//...
"foo_id":{
"id":1
}
//...
}
然后将其委托给杰克逊。
在这种情况下,对象是 Foo 类型,但还有其他可能不属于此类的对象。此外,在这种情况下,该 json 是一个数字,但如果它也是一个字符串,我也想支持。 所以,我需要一种通用的方法来做到这一点,这就是为什么我认为委托给杰克逊可能是一个好主意。
不允许注释。假设您已经在为此属性编写反序列化器。
【问题讨论】:
-
不允许注释是什么意思?根本没有注释?您可以使用注释为 jsonproperty 指定反序列化器,在其中您可以区分整数和字符串....
-
我正在尝试为杰克逊编写一个模块。这个想法是保持 POJO 不受影响。我已经编写了一个 BeanDeserializerModifier,我可以在其中将任何反序列化器分配给该属性。现在的问题是反序列化器。
-
因此,在您的反序列化器中,您需要检查 foo_id 字段和值,如果该值为 instanceof 字符串,则返回例如 foostr 类型,如果是整数,则返回 foointeger 类型。如果我是对的,我可以在这里发布一些代码作为答案!?
-
该代码可能会有很大帮助,谢谢,但这不是我在这里所需要的。问题是我不知道 Foo 类中的 id 属性是数字还是字符串,或者其他什么。理想情况下,反序列化器不应该关心它。我需要的是检查 foo_id 字段并创建一个 Foo 类的实例,其 id 设置为 foo_id 属性,不管是什么。请尽你所能做出贡献。我们可能会从中得到一些想法。谢谢!