JsonView对象的所有字段的注释

时间:2015-09-02 06:56:55

标签: java json jackson

如何在JSON响应(视图)中包含Java对象的所有字段,而不在该Java对象的每个字段上指定@JsonView

编辑:我需要这样才能实现不使用其他外部库。

2 个答案:

答案 0 :(得分:2)

这是@JsonView的常见问题。注释仅适用于方法和属性,因此您不能只注释整个类并包含所有属性。

我将假设您在Spring中使用它。这种行为是由于Spring选择在ObjectMapper中默认禁用所有属性的包含。因此,仅包含@JsonView带注释的属性,而其他属性则不包括。

您可以将MapperFeature.DEFAULT_VIEW_INCLUSION设置为true来更改此设置。像这样:

普通Java:

mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);

Spring Boot(将其添加到application.properties):

spring.jackson.mapper.default-view-inclusion=true

默认情况下,这种方式在JSON seralization期间将包含所有属性,您可以使用@JsonInclude和其他Jackson注释来控制包含和排除。

答案 1 :(得分:0)

从Jackson 2.9开始,@JsonView注释现在可以应用于类级别,以具有您要求的行为。

https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9

允许在类上使用@JsonView,以指定默认视图用于非注释属性。

@JsonView(MyView.class);
public class AllInView {

    // this will be in MyView
    private String property1;

    // this will be in MyView
    private String property2;

    // this will be in DifferentView
    @JsonView(DifferentView.class)
    private String property3;

}