restful接口返回忽略字段 jackon的@JsonIgnore注解应用
restful接口返回忽略字段 jackon的@JsonIgnore注解应用
//demo}else{//其他的订单无需展示 报案号 显示 @JsonIgnore 的作用vo.setCpicCouponReportNo("");}
在Spring Boot的@RestController接口中,若需要忽略某个字段不参与JSON序列化,可以使用Jackson的@JsonIgnore注解。该注解可直接标记在字段或getter方法上,实现序列化时排除指定字段的效果
此外,还有以下常用方式实现字段忽略:
1.类级别配置:通过@JsonIgnoreProperties注解忽略多个字段,例如@JsonIgnoreProperties({"field1", "field2"})
2.全局配置:在application.yml中设置spring.jackson.default-property-inclusion: non_null,可全局忽略所有null值字段
3.动态过滤:通过SimpleFilterProvider实现运行时动态过滤,适用于不同接口返回不同字段的场景
若需更灵活的序列化控制,还可结合@JsonInclude(控制字段包含条件)和@JsonProperty(定义字段别名)等注解使用
@JsonProperty用于属性名映射,而@JsonInclude控制序列化时的字段包含规则。
@JsonInclude(JsonInclude.Include.NON_NULL) public class Order {@JsonProperty("order_id")private String id;@JsonProperty("name")private String buyerName; }
@JsonInclude(JsonInclude.Include.NON_NULL) // 仅当字段非null时包含该字段
@JsonInclude(JsonInclude.Include.NON_EMPTY) // 所有空字符串或null值字段都不会出现在JSON结果中
@JsonInclude(JsonInclude.Include.NON_DEFAULT) // 可忽略默认值字段
反序列化兼容
@JsonProperty在反序列化时同样有效,可与@JsonInclude的序列化规则独立工作
@JsonInclude(JsonInclude.Include.NON_NULL) public class Address {@JsonProperty("zip_code")private String postalCode; // 反序列化时接受zip_code字段 }
这使得JSON字段名与Java属性名解耦。
关键点总结:
@JsonInclude作用于序列化阶段,控制字段可见性规则
@JsonProperty在序列化/反序列化中均生效,用于字段名映射
类级注解定义全局规则,属性级注解可覆盖全局行为