Возврат объектов hashmap вместо явно определенных экземпляров dto (плохая практика?) - PullRequest
3 голосов
/ 25 августа 2011

Я обнаружил, что, поскольку JSON не делает различий между хешами и объектами, я могу обойти «закон» всегда придерживаться классов dto и вместо этого возвращать хэш-карту «на лету» или списокhashmaps, которые будут сериализованы в JSON как hash / es, а позже javascript будет обрабатываться как обычный объект / s.

Конечно, это не всегда применимо, но есть такие варианты использованиягде вы не можете реально гарантировать состояние возвращаемых данных (что есть, а что нет, некоторые реквизиты могут существовать, другие - нет).Это будет стоить мне много абстракций, чтобы сделать "Java".Плюс, в конце концов, JavaScript даже не будет заботиться о том, каким был исходный класс возвращаемых объектов.

Это вообще плохая практика?

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Обычно при сериализации java-объектов в JSON, потому что вы делаете AJAX-вызов и получаете ответ. Обычно для того, чтобы код javascript обрабатывал этот ответ, он должен быть в каком-то непротиворечивом формате, например, {user:{name:steve, favoritecolor:purple}} и т. Д. То, что использование java-класса для представления того, что вместо ванильного хэш-карты вы получаете, - это согласованность. Вы гарантируете потребителям вашего JSON, что они могут полагаться на его содержимое, потому что оно будет иметь те же поля, что и DTO. Это та же самая причина, по которой вы не отказались бы от занятий в java-программе в пользу передачи множества HashMaps.

0 голосов
/ 25 августа 2011

Реальная проблема возникает позже, когда все ваши методы в вашем бизнес-коде Java принимают только HashMaps; D Однако, если у вас небольшое приложение, я бы решил определить интерфейсы (вместо классов fo) и генерировать их во время выполнения с помощью прокси-классов API.которые реализуют эти интерфейсы, но используют HashMap вместо написания нормального класса.Смотри: http://download.oracle.com/javase/1.3/docs/guide/reflection/proxy.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...