Json или родной pojo

У меня есть дебаты со своей командой, я отдыхаю ws, которые возвращают что-то в формате certian Формат выглядит примерно так

{  
    Name:{  
        Inner:[  
            {  
                inner:[  
                    {  
                        inner:"hdjdjd"
                    }
                ]
            }
        ]
    }
}

В ws я возвращаю данные в этом формате только один раз.

Мои команды думают, что я должен создать json, используя узел объекта jacksons в методе ответа. И я думаю, что мне следует смоделировать формат в классе pojo, а затем вернуть представление класса json (с использованием Джексона). Что является правильным вариантом?


person Amit Mizrahi    schedule 10.03.2016    source источник
comment
Что бы ни делало работу   -  person Sleiman Jneidi    schedule 10.03.2016


Ответы (1)


Это дело вкуса.

Если этот формат JSON используется не один раз, советую создать DTO или POJO * и вернуть его.

В противном случае вернуть узел объекта jacksons, почему бы и нет?

* Все DTO являются POJO, но не все POJO являются DTO. Примером POJO, который не является DTO, является бизнес-класс, который содержит состояние и поведение (бизнес-логику).

person Andrew Tobilko    schedule 10.03.2016
comment
Поскольку код гораздо менее читабелен, вместо создания объекта возвращаемого формата я создаю объект json, который не является родным для java, и я думаю, новый формат (.....) вместо new ObjectNode (). Put.put. .... и т.д .. более читабельно, не правда ли? - person Amit Mizrahi; 10.03.2016
comment
@ user5723395, да, в методе ответа будет удобнее и компактнее, но нужно создать новый класс, который не содержит никакой логики и хранит только данные - person Andrew Tobilko; 10.03.2016
comment
Это идея шаблона проектирования DTO - person Amit Mizrahi; 10.03.2016
comment
Я вижу следующие преимущества в использовании POJO: 1) Проверка типа, 2) Ясность в структуре ответа, 3) Возможность выборочной десериализации. 4) Возможность повторного использования кода, когда pojos выводятся на внешний сервер обслуживающей службой. Почему тогда не POJO? - person Prasanna; 08.02.2019
comment
@Prasanna Я согласен. Это было некоторое время назад, мне нужно пересмотреть этот ответ. - person Andrew Tobilko; 08.02.2019
comment
@Prasanna Представление Джексона - единственный вариант, когда структура JSON неизвестна или его формат меняется динамически и непредсказуемо. В таких случаях лучше иметь JSONNode вместо POJO с абстрактными полями Object или Map<String, String>. - person Andrew Tobilko; 08.02.2019
comment
@AndrewTobilko Полностью согласен. - person Prasanna; 08.02.2019