是否可以利用JSON作为输出模式的共享引用的概念?我读了这篇文章http://blog.bdoughan.com/2010/10/jaxb-and-shared-references-xmlid-and.html),但是将我的JAX-RS上的@Produces更改为JSON会强制进行无限循环。基本上我想将一个对象减少到它的id:
public class Foo {
private long id;
private String someText;
private Bar bar;
}
我想要这样绑定这样的实例:
{
"id": 1234,
"someText": "lorem",
"bar_id": 9876
}
这是我想要避免的:
{
"id": 1234,
"someText": "lorem",
"bar": {
"id": 9876,
"anotherText": "ipsum"
}
}
答案 0 :(得分:1)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
使用MOXy作为您的JSON绑定提供程序,您引用的shared references帖子(来自我的博客)将适用于JSON,就像它对XML一样。由于您在下面使用JAX-RS,因此在该环境中配置MOXy的示例如下:
使用@XmlID
/ @XmlIDREF
时,预计由其ID引用的对象也存在于文档中。由于这不是您的使用案例,因此最好使用XmlAdapter
。 XmlAdapter
的签名类似于:
public class BarAdapter extends XmlAdapter<Integer, Bar> {
...
}
在XmlAdapter
中,您将负责在元帅期间从Bar
的实例返回ID,并根据Bar
返回id
的实例在一个unmarshal期间。