SpringBoot 使用Fastjson 将返回值进行格式化处理

简介: SpringBoot 使用Fastjson 将返回值进行格式化处理
{
    "code": 200,
    "message": "查询成功",
    "data": [
        {
            "id": 1485178867378401281,
            "nickname": "测试",
            "province": null,
            "city": null,
            "gender": null,
            "phone": null,
        }
    ]
}

当我们返回一个JSON格式的数据时,经常会出现 null 值的这种情况,在实际项目中,我们有可能希望当字段为 null 值时返回 ""。例如:

{
    "code": 200,
    "data": [
        {
            "birthday": 0,
            "city": "",
            "gender": "",
            "id": 1485178867378401281,
            "nickname": "测试",
            "phone": "",
        }
    ],
    "message": "查询成功"
}

解决方法:

使用 fastjson 处理 JSON 数据,我们需要自定义实现 WebMvcConfigurationSupport 类,重写其中的 configureMessageConverters 方法

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Bean
    public HttpMessageConverter fastJsonMessageConverters() {
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        /*
            SerializerFeature.PrettyFormat 格式化输出
            WriteMapNullValue  输出 map 中值为 null 的字段
            WriteNullStringAsEmpty  字符类型字段如果为 null,输出为 ”“
            WriteNullNumberAsZero   数值字段如果为 null,输出为 0
            WriteNullListAsEmpty    List字段如果为 null,输出为[]
            WriteNullBooleanAsFalse Boolean字段如果为 null,输出为 false
            DisableCircularReferenceDetect  消除对同一对象循环引用的问题
         */
        fastJsonConfig.setSerializerFeatures(
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteNullNumberAsZero,
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteNullBooleanAsFalse,
                SerializerFeature.DisableCircularReferenceDetect);
        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
        //将long型转换成字符串输出,防止过长丢失精度
        SerializeConfig.getGlobalInstance().put(Long.class, ToStringSerializer.instance);
        fastJsonConfig.setSerializeConfig(SerializeConfig.globalInstance);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        fastConverter.setDefaultCharset(StandardCharsets.UTF_8);
        List<MediaType> mediaTypeList = new ArrayList<>();
        // 解决中文乱码问题,相当于在 Controller上的 @RequestMapping 中加了个属性produces = "application/json"
        mediaTypeList.add(MediaType.APPLICATION_JSON);
        fastConverter.setSupportedMediaTypes(mediaTypeList);
        return fastConverter;
    }
    @Override
    protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(fastJsonMessageConverters());
    }
}
目录
相关文章
|
JSON 前端开发 Java
SpringBoot中Date格式化处理
日期格式化处理:从混乱到清晰,轻松转换日期格式
851 1
|
JSON 安全 JavaScript
SpringBoot时间格式化
SpringBoot时间格式化
238 0
|
JSON 人工智能 Java
SpringBoot实战(九):标准化json返回值
SpringBoot实战(九):标准化json返回值
241 0
|
设计模式 JSON 前端开发
SpringBoot中对LocalDateTime进行格式化并解析
SpringBoot中对LocalDateTime进行格式化并解析
1729 0
|
9月前
|
JSON 前端开发 Java
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
在 Spring Boot 开发中,日期时间格式化是前后端交互的常见痛点。本文详细解析了 **@DateTimeFormat** 和 **@JsonFormat** 两个注解的用法,分别用于将前端传入的字符串解析为 Java 时间对象,以及将时间对象序列化为指定格式返回给前端。通过完整示例代码,展示了从数据接收、业务处理到结果返回的全流程,并总结了解决时区问题和全局配置的最佳实践,助你高效处理日期时间需求。
1213 0
|
10月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 &quot;&quot;,Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
529 0
|
9月前
|
JSON 前端开发 Java
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
在 Spring Boot 开发中,处理前后端日期交互是一个常见问题。本文通过 **@DateTimeFormat** 和 **@JsonFormat** 两个注解,详细讲解了如何解析前端传来的日期字符串以及以指定格式返回日期数据。文章从实际案例出发,结合代码演示两者的使用场景与注意事项,解决解析失败、时区偏差等问题,并提供全局配置与局部注解的实践经验。帮助开发者高效应对日期时间格式化需求,提升开发效率。
2766 2
|
12月前
|
缓存 NoSQL Java
springboot怎么使用rides缓存方法的返回值 完整例子
通过上述步骤,我们成功地在 Spring Boot 项目中集成了 Redis 缓存,并通过注解的方式实现了方法返回值的缓存。这种方式不仅提高了系统的性能,还简化了缓存管理的复杂度。使用 Spring Boot 的缓存注解和 Redis,可以轻松地实现高效、可靠的缓存机制。
289 23
|
文字识别 Java
文本,文字识别07,SpringBoot服务开发-入参和返回值,编写接口的时候,要注意识别的文字返回的是多行,因此必须是List集合,Bean层,及实体类的搭建
文本,文字识别07,SpringBoot服务开发-入参和返回值,编写接口的时候,要注意识别的文字返回的是多行,因此必须是List集合,Bean层,及实体类的搭建
|
JSON fastjson Java
Spring Boot Jackson 和Fast JSON 用哪个好啊 ?
【4月更文挑战第22天】
3170 1