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在序列化/反序列化中均生效,用于字段名映射
类级注解定义全局规则,属性级注解可覆盖全局行为

posted on 2025-10-16 11:36  oktokeep  阅读(16)  评论(0)    收藏  举报