我正在尝试用 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 时,对象映射器不知道要使用什么具体类。我怎么告诉他这个?问题是我想要一个 Item(带有 Item 列表(带有 ItemData 列表))。
虽然我只使用一个包含所有字段(文本、链接、数据)的对象,但我更喜欢这种看起来更好的设计。你觉得值得吗?
实际上,我有不止一个字段可以复制,因为 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"
]}
}
(问题更多是关于如何在我的第一个请求中隐藏第二个级别,我确实了解如何处理第二个请求)。
谢谢,