是否可以使用特定的JsonView告诉JsonGenerator序列化对象?
例如:
@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。
发布于 2012-12-19 07:53:05
这是我最终使用的解决方案--请告诉我是否有更好的方法
@Override
public void serialize(Author value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
mapper.setSerializationConfig(mapper.getSerializationConfig().withView(SummaryView.class));
jgen.writeStartObject();
for (Book book : value.getBestFiveBooksOfAllTime()) {
jgen.writeFieldName(book.getId().toString());
mapper.writeValue(jgen, book);
}
jgen.writeEndObject();
}https://stackoverflow.com/questions/13943174
复制相似问题