SpringBoot序列化时值为null的数据不返回

方式一:在实体类的属性上添加注解

children的值为null时不序列化(null不返回)

category的值为null时不序列化(null不返回)

categoryName的值为空字符串或null时不序列化(空值和null不返回)

@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Category> children;

@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Category category;

@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String categoryName;

方式二:在yml配置文件中进行全局配置

spring:
    jackson:
    	default-property-inclusion: NON_EMPTY

方式三:配置ObjectMapper对象

    /**
     * 更改jackson默认配置
     */
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        // 防止JSON名称被转义
        // objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
        // 将Null值改为空字符串
        /*objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<>() {
            @Override
            public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException {
                jg.writeString("");
            }
        });*/
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
        // 对于空的对象转json的时候不抛出错误
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
        // 禁用遇到未知属性抛出异常
        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        // null的属性不序列化(null不返回)
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        // 空值的属性不序列化(空字符串和null不返回)
//        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        return objectMapper;
    }

总结:

NON_NULL表示null值不序列化(null不返回)

NON_EMPTY表示空字符串和null值不序列化(空字符串和null不返回)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NCDS程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值