2013-05-21 7 views
1

Я использую Jackson для разбора JSON для моего приложения для Android. Я также намерен использовать его на моем сервере REST, поэтому я буду делиться своими моделями между клиентом и сервером.Как работать с несколькими «видами» той же модели домена?

Я создал POJO для моделирования объекта домена «Друг». Когда клиент получает https://www.myserver.com/api/1/friend/1234 Я хочу вернуть сериализованный Друг с ID 1234, возможно, с одним или двумя полями, отсутствующими.

Однако, когда клиент получает https://www.myserver.com/api/1/friend/ Я хочу вернуть все объекты-другу, но с меньшим количеством данных, которые могут быть более подходящими для результатов поиска (например, только имя, фамилия и профиль, но исключая их список друзей, дату рождения и т. д.).

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

+0

Ну, насколько я понял, вы говорите о двух разных действиях: отобразите информацию о друзьях и перечислите друзей. Вы используете что-то вроде 'toString()' для отображения данных? –

ответ

0

Посмотрите, хотите ли вы использовать Наследование. У вас есть базовый класс с полями, которые вы хотите разделить со всеми, и подкласс, который имеет более ограниченные данные. Имейте два API JSON, один для общедоступной информации и один для общедоступной + защищенной информации, а также сериализуйте базовый класс или объект подкласса, на основе которого был вызван API.

+0

Наследование кажется немного неряшливым и негибким. Есть что-то вроде django-tastypie в мире java? – jbrown

1

Наследование может быть опцией в сочетании с @JsonIgnoreProperties.

Вы можете получить класс Friend и расширить его, чтобы ограничить, какие свойства должны быть сериализованы.

@JsonIgnoreProperties({ "friends", "dateOfBirth" }) 
class RestrictedFriend extends Friend { 

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