2014-12-07 59 views
2

我想要将包含接口的对象的JSON表示反序列化为其属性之一。对象的类看起来像这样:反序列化具有接口属性而不使用注释的JSON类

class A { 
    B b; 
} 

Interface B { 
    //some content 
} 
Class C implements B { 
} 
Class D implements B { 

} 

我认为杰克逊是最好的做到这一点。

最简单的方法是在解决方案here中提到的在接口B上面添加一些注释。但是这里的问题是我没有权限改变任何这些类或接口。所以我不能把注释放在A类中。还有另一种方法可以实现吗?

+0

您必须使用[自定义反序列化器](http://www.baeldung.com/jackson-deserialization)。 – 2014-12-07 10:27:21

+0

@BoristheSpider是的,我想过写一个类与A完全相同的类,并将json反序列化为该对象。但接下来我将不得不手动设置类A对象的每个成员 – Alex 2014-12-07 10:50:25

+0

我不理解您的评论。在“ObjectMapper”中添加一个反序列化器,并在其中添加自定义逻辑。 – 2014-12-07 12:17:00

回答

1

快速肮脏的解决方法:

你可以反序列化的C类第一,并设置为A类的属性

形式化方法:

这是一种反序列化的战略,您可能需要确定无论是C类还是D类的JSON内容,这都是自定义的反序列化

相关问题