Представьте, что у меня есть класс 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, если он есть.