JsonGenerator
特定の JsonView を使用してオブジェクトをシリアル化するように指示することは可能ですか?
例えば:
@Data
class Author {
@JsonSerialize(using=CustomSerializer.class)
List<Book> bestFiveBooksOfAllTime;
};
@Data
class Book extends BaseEntity
{
@JsonView(SummaryView.class)
private String title;
@JsonView(SummaryView.class)
private String author;
private String review;
}
私のCustomSerializer
では、次の行に沿って何かを実行できるようにしたいと考えています。
public class CustomSerializer extends JsonSerializer<Author> {
@Override
public void serialize(Author value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jgen.writeStartObject();
for (Book book : value.getBestFiveBooksOfAllTime()) {
// Something like the following...
jgen.writeObjectFieldUsingView(book.getId().toString(), book, SummaryView.class);
}
jgen.writeEndObject();
}
}
つまり、上記のシナリオでは、結果に のマップが含まれるようにしたいと思います。bestFiveBooksOfAllTime
ここで、値はSummaryView
本の だけです。