2013-10-24 4 views
1

Я проверил @JsonIdentityInfo, @JsonManagedReference и @JsonBakcReference, но, похоже, никто из них не справляется с моей проблемой.Сериализация JSON из одного объекта с пружиной и JPA

В принципе у меня есть следующая таблица:

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, но отображаете идентификатор вместо отображения объекта? –

+0

Просто, чтобы упростить доступ к db – Francois

ответ

1

Даже я ищу один ответ - у меня есть много методик, но не знаю, какой из них лучше всего подходит. В большинстве моих проектов, я сделал пользовательское сопоставление

  1. класса

    My Entity будет иметь два метода - fromJSON десериализовать JsonNode/JSONObject к моему бобу и методе toJSON() для упорядочивания данных сущности в JsonGenerator/JSONObject в зависимости от библиотеки, которую я использую.

  2. Я нашел еще одну альтернативу выше (1): Я использовал привязку данных Jackson для сериализации/десериализации данных в JSON. Если у вас есть зависимость spring и mvc и библиотека привязки джексона в пути к классам, это будет сделано автоматически. Это выглядит многообещающе.

Но с (1) выше я могу настроить формат и имена тегов в сгенерированном выходе JSON. Также я могу экспортировать один файл констант для имен TAG, которые также могут использоваться в проекте клиента (это очень помогает мне, поскольку я использую GWT для разработки клиентского интерфейса).

+0

Добро пожаловать в StackOverflow @ vworld4u. Отличный первый ответ. – digitalextremist

Смежные вопросы