Возможно настроить Mapper Jackson-Json, чтобы исключить свойства на основе того, какой объект он сериализует?
Вопрос
Скажем, у меня есть объекты, такие как бизнес со списком объектов адреса, и заказ, который имеет бизнес.
Можно ли настроить, чтобы, когда заказ сериализован, он исключает список адресов из бизнес -объекта, а когда бизнес сериализован, он включает в себя список?
Я использую Ajax, чтобы получить данные для RIA, и при работе с заказом мне не волнуют адресные данные, но при работе с бизнесом я хочу список.
Я также использую Hibernate для настойчивости, так что это действительно эффективность и оптимизация производительности.
Решение
Если я правильно понимаю вопрос, да, я думаю JSON Views Для Джексона это позволит. Вы в основном создали бы два разных представления (профили) для того же типа и выберете, какой из них использовать для сериализации.
Другие советы
Вы можете использовать Аннотация jsonignore игнорировать Адрес Список сериализации и отключить использование аннотаций в ObjectMapperS. SerializationConfig При сериализации а Бизнес. Анкет Конечно, это означает, что другие аннотации, которые вы можете использовать, также игнорируются. Не идеально, но вы можете найти лучшее решение, изучая это, надеюсь, это поможет (очевидно).
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);
Да, ты можешь сделать это. Все, что вам нужно, - это объявить список адреса как переходную собственность в вашем бизнес -объекте.
Затем добавьте следующий код в свой jsonconfig:
jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore
используется, чтобы игнорировать свойства, которые вы не хотите преобразовать в JSON.
public class UserDocument {
private long id;
private String documentUrl;
@JsonIgnore
private byte documentType;
//traditional getters and setters
}
Вывод: это преобразует свойства я бы а также DocumentUrl но не будет конвертировать собственность тип документа.
{
"id": 5,
"document_url": "/0/301115124948.jpg"
}