Аннотировать свойство, чтобы сказать Джексону использовать определенный JsonView при сериализации этого свойства? - PullRequest
0 голосов
/ 27 мая 2019

Представьте, что у меня есть класс Product, и у меня есть несколько разных способов, которые я хочу визуализировать Product в JSON, поэтому я создаю для этого несколько JsonView:

data class Product(
    @JsonView(Summary::class)
    val sku: String,

    @JsonView(Summary::class)
    val name: String,

    @JsonView(Detailed::class)
    val description: String,

    @JsonView(Detailed::class)
    val colors: Array<String>
)

Теперь представьте, что у меня есть список продуктов, который я только хочу использовать для отображения продуктов в сводной форме:

data class ProductList(
    val name: String, 
    val products: List<Product> 
)

Теперь, конечно, я могу сделать это, сказав Джексону использовать представление:

objectMapper.writerWithView(Summary::class.java).writeValueAsString(productList);

Хорошо, но для каждого использования ProductList требуется этот дополнительный код.Нет никакого способа (который я нашел) сказать Джексону:

Когда вы сериализуете ProductList в JSON, всегда используйте представление Summary для экземпляров Product в products.

Конечно, я не могу аннотировать products с помощью @JsonView, потому что это на самом деле говорит Джексону о включении продуктов только при представлении Summary, но если бы была другая аннотациякак @UseJsonView ...

Во всяком случае - просто убедившись, что нет никакого способа сделать это, что я скучаю.Я использую Kotlin в примерах, потому что он более компактен, но я очень рад получить ответ Java, если он есть.

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