Возможно настроить Mapper Jackson-Json, чтобы исключить свойства на основе того, какой объект он сериализует?

StackOverflow https://stackoverflow.com/questions/2507768

  •  22-09-2019
  •  | 
  •  

Вопрос

Скажем, у меня есть объекты, такие как бизнес со списком объектов адреса, и заказ, который имеет бизнес.

Можно ли настроить, чтобы, когда заказ сериализован, он исключает список адресов из бизнес -объекта, а когда бизнес сериализован, он включает в себя список?

Я использую 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"
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top