2013-05-21 90 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