使用Spring和JPA从单个实体序列化JSON

时间:2013-10-24 13:45:42

标签: json spring-mvc jpa serialization jackson

我检查了@JsonIdentityInfo@JsonManagedReference@JsonBakcReference,但似乎没有人管理我的问题。

基本上我有下表:

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?知道我可以在彼此中有几个级别

1 个答案:

答案 0 :(得分:1)

即使我正在寻找一个答案 - 我有很多方法,但不确定哪一个最合适。在我的大多数项目中,我都做了自定义映射

  1. 我的实体类将有两个方法 - 从JSON到反序列化JsonNode / JSONObject到我的bean toJSON()方法将实体数据序列化为JsonGenerator / JSONObject,具体取决于我使用的库。

  2. 我找到了上面(1)的另一种替代方法:我使用Jackson-databinding将数据序列化/反序列化为JSON。如果你在类路径中有spring和mvc依赖项以及jackson数据绑定库,那么这将自动完成。这看起来很有希望。

  3. 但是上面的(1)我可以在生成的JSON输出中自定义格式和标签名称。此外,我可以为TAG名称导出单个常量文件,这些文件也可以在客户端项目中使用(这有助于我使用GWT进行客户端UI开发)。