Từ việc xem xét các tùy chọn, có vẻ như bạn có thể chú thích các thuộc tính chỉ được hiển thị nếu một View
nhất định được chuyển đến ObjectMapper
được sử dụng để tuần tự hóa. Do đó, bạn có thể chỉnh sửa lớp:
public static class FooReference {
public DBRef<Foo> foo;
@JsonView(Views.WebView.class)
public Foo getFoo() {
return foo.fetch();
}
}
và cung cấp:
class Views {
static class WebView { }
}
và sau đó tuần tự hóa sau khi tạo cấu hình với chế độ xem chính xác:
SerializationConfig conf = objectMapper.getSerializationConfig().withView(Views.WebView.class);
objectMapper.setSerializationConfig(conf);
Mà sau đó sẽ tuần tự hóa nó. Không chỉ định chế độ xem khi tuần tự hóa với trình bao bọc MongoDB có nghĩa là phương thức sẽ bị bỏ qua. Các thuộc tính không có chú thích JsonView được tuần tự hóa theo mặc định, một hành vi bạn có thể thay đổi bằng cách chỉ định:
objectMapper.configure(SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
Thông tin thêm có sẵn trên Jackson Wiki.
Vẫn còn những lựa chọn thay thế khác, hóa ra là:có Jackson MixIns cho phép bạn ghi đè (de) hành vi tuần tự hóa của các phần của một lớp mà không cần sửa đổi chính lớp đó và kể từ Jackson 2.0 (bản phát hành rất gần đây) có các bộ lọc , quá.