2013-05-21 49 views
1

是否有可能使用JSON作为输出模式的共享引用的概念?我读过这篇文章http://blog.bdoughan.com/2010/10/jaxb-and-shared-references-xmlid-and.html),但将JAX-RS上的@Produces更改为JSON会导致无限循环。基本上我想减少的目的是它单曲ID:与json共享refrences

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" 
    } 
} 

回答

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,并在一个解组返回基于该id一个的Bar实例。

+0

谢谢先生。我之前在提供的链接上磕磕绊绊,但无法实现自定义应用程序,因为我错过了正确的moxy jar。 – Imperative