我正在尝试使用Java中的Jersey/Jackson反序列化一些JSON。
以下是我的JSON示例:
{
"text":"toto",
"link":"titi",
"items":[{
"text":"toutou",
"link":"tata",
"items":[{
"text":"toto2",
"link":"toutou2",
"data":"tonti",
]}
]}
}
所以我的Java模型部分看起来像这样:
public IItem {
...
}
public Item implements IItem {
List<IItem> items;
String text;
String link;
...
}
public ItemData extends Item {
String data;
...
}
现在,当我尝试反序列化我的JSON时,对象映射器不知道使用哪个具体类。我该如何告诉他呢?问题是我想要一个项目(带有项目数据列表的项目)。
我考虑过只使用包含所有字段(文本、链接、数据)的一个对象,但我更喜欢这种设计,因为它看起来更好。你认为这值得吗?
实际上,我有更多的字段需要复制,因为JSON结构有点更加复杂,为了清晰起见,我已经简化了它。
问题2:之后我需要再次将我的对象序列化为JSON(第一部分仅用于临时开发,稍后我将从JDBC驱动程序中填充对象),我如何告诉Jersey一次只显示一级?
即我请求“/”,我只想要第一层,答案应该是:
{
"text":"toto",
"link":"titi",
"items":[{
"text":"toutou",
"link":"tata",
]}
}
如果我请求
/tata
,答案应该是: {
"text":"toutou",
"link":"tata",
"items":[{
"text":"toto2",
"link":"toutou2",
"data":"tonti"
]}
}
这个问题更多是关于如何在第一个请求中隐藏第二级,我了解如何处理第二个请求。
谢谢!