2013-02-20 1 views
0

Я строй RESTful службы с помощью Джерси (Jackson POJO отображения) и есть некоторые сомнения ... Представьте себе форум, как приложение, где в домене у меня есть группы и Вопрос POJO.Изменения по умолчанию JSON на в Jersesy-Джексон

Group.java

class Group{ 
    int id; 
    String name; 
//setter/getters 
} 

Question.java

class Question{ 
    int id; 
    String title; 
    String text; 
    //setter/getters 

} 

Как вы можете видеть, что я не имею никакого отношения, определенный между этими двумя классами. То, что я пытаюсь сказать, группа не имеет

private Question[] questions; 

Когда я называю GET/отдых/группы я получаю идеальный JSON:

{ 
    [ 
    {"id":1, "name":"Group name..." }, 
    {"id":2, "name":"Group name..." } 

    ] 
} 

Что Im пытается получить, когда я АКС для пОЛУЧИТЬ/отдых/группы/12:

{ 
    "group":{ 
     "id":12, 
     "name":"Group 12" 

    }, 
    "questions":[ 
      {"id":102, "title":"question title..." }, 
      {"id":201, "title":"question title..." } 
    ] 

} 

Я был в состоянии получить что-то подобное, определив переменную-член в классе Группа:

private Question[] questions; 

Я пытаюсь очистить свои классы домена от зависимости от HAS-A, так как я буду использовать Hibernate и определит отношение через аннотации. Вопрос заключается в том: , что это лучший и наиболее гибкий способ форматирования JSON я хочу вернуться к ресурсам, которые имеют HAS-A отношения с другим ...

+0

второй формат json - вопрос, вопросы или группы, вопросы? предположим, что это опечатка –

+0

извините, это опечатка ... Это всего лишь пример ... Спасибо ... – luigi7up

ответ

0

Вам нужно создать что-то вроде GroupResponse объекта:

class GroupRespose { 
    final Group question; 
    final List<Question> questions; 
} 

И используйте это как свой объект ответа. Это даст вам формат, который вы хотите (хотя, учитывая ваш вопрос, я подозреваю, что вы действительно хотели final Group group, и это было опечаткой в ​​вопросе).

+0

Означает ли это, что объект домена, который я буду использовать для REST, будет отличаться или содержать больше объектов, чем ORM : 1 таблица, 1 объект, отсутствие слабой ассоциации? Хорошо, я думаю, я попытаюсь объединить ваш подход с Hibernate или MyBatis и посмотреть, как это происходит ... Спасибо – luigi7up

+0

еще одна вещь ... почему окончательный? и нам не хватает конструктора GroupResponse (Group group, Question [] questions) – luigi7up

+0

'final' из привычки (все мои объекты неизменяемы). И да, у вас отсутствует конструктор и все остальные части объекта, но это голые кости нужного вам класса. – jgm

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