2023-07-13
后端
00
请注意,本文编写于 379 天前,最后修改于 67 天前,其中某些信息可能已经过时。

SpringBoot接口中返回JSON类型,通常我们会定义通用的ResultUtil工具类,当data为null,接口也会返回{...,data

,...},所以出于强迫症当为null,接口不需要返回data字段。

在Spring Boot中,当控制器(Controller)方法使用@RestController注解标记时,Spring会自动处理方法的返回值,并将其转换为JSON格式的响应。

当控制器方法执行完成后,Spring会检查方法的返回值类型。如果返回值是一个对象(例如实体类对象),Spring将使用已配置的消息转换器(MessageConverter)来将对象转换为JSON格式的字符串。默认情况下,Spring Boot已经配置了适用于JSON序列化和反序列化的Jackson消息转换器

所以最后解决方式使用Jackson中的注解@JsonInclude(),参数如下:

  1. ALWAYS: 总是包含属性字段,无论其值是什么,包括null值。
  2. NON_NULL: 只包含非null值的属性字段,忽略null值的字段。
  3. NON_ABSENT: 只包含非缺失(非null、非空字符串、非空集合等)的属性字段,忽略缺失的字段。
  4. NON_EMPTY: 只包含非空(非null、非空字符串、非空集合等)的属性字段,忽略空的字段。
  5. NON_DEFAULT: 只包含非默认值的属性字段,忽略与默认值相等的字段。默认值根据属性类型而定,例如数值类型的默认值为0,布尔类型的默认值为false。
  6. CUSTOM: 自定义包含规则,需要通过自定义序列化器或其他方式实现。
  7. USE_DEFAULTS: 使用默认的包含规则,由Jackson库的全局配置决定。

🤪那使用那个就一目了然,@JsonInclude(JsonInclude.Include.NON_NULL)

最后测试接口调用:

调用前: { "success": true, "code": 200, "message": "接口调用成功!", "data": null, "time": "2023-07-13 15:12:05" } 调用后: { "success": true, "code": 200, "message": "接口调用成功!", "time": "2023-07-13 15:12:15" }

本文作者:酷少少

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!