2013-10-24 75 views
1

我已經檢查了@JsonIdentityInfo,@JsonManagedReference@JsonBakcReference,但似乎沒有人管理我的問題。使用Spring和JPA從單個實體序列化JSON

基本上我有如下表:

id | name | parent_id 
1000 | Item 1 | (null) 
2000 | Item 2 | 1000 
2001 | Item 3 | 2000 
2002 | Item 4 | 2000 
3000 | Item 5 | 1000 
3001 | Item 6 | 3000 

我有以下的JPA實體:

@Entity 
@Table(name = "table") 
public class table { 
    @Id 
    @Column(name="id") 
    private Long id; 

    @Column(name="name") 
    private String name; 

    @Column(name="parent_id") 
    private Long id; 

    //getters setters 
} 

我想實現的是產生一個JSON字符串如下:

[{title: "Item 1", key: "1000"}, {title: "Item 2", key: "2000", children[{title: "Item 3", key:"2001"},{title: "Item 4", key": "2002"}]},{title: "Item 5", key:"3000", children[{title: "Item 6", key: "3001"}]}] 

我的主要問題是如何將序列化寫入JSON?因爲我知道我可以在不同的層面上互相關聯

+0

您正在使用ORM框架,但是映射一個id而不是映射實體? –

+0

只是爲了讓數據庫訪問更容易 – Francois

回答

1

即使我在尋找一個答案 - 我有很多方法,但不知道哪一個最適合。在大多數我的項目,我做了一個自定義映射

  1. 我的實體類將有兩個方法 - fromJSON到JsonNode/JSONObject的反序列化到我的豆和 的toJSON()方法序列化實體數據JsonGenerator/JSONObject取決於我正在使用的庫。

  2. 我發現了上面(1)的另一種替代方法:我使用Jackson-databinding將數據序列化/反序列化爲JSON。如果你在類路徑中有spring和mvc依賴和jackson數據綁定庫,這將會自動完成。這看起來有希望。

但是通過上面的(1)我可以在生成的JSON輸出中自定義格式和標籤名稱。此外,我可以導出單個常量文件的TAG名稱,可以在客戶端項目中使用(這有助於我很多,因爲我使用GWT進行客戶端UI開發)。

+0

歡迎來到StackOverflow @ vworld4u。偉大的第一回答。 – digitalextremist