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());
    }
}
目录
相关文章
|
2月前
|
JSON 前端开发 Java
SpringBoot中Date格式化处理
日期格式化处理:从混乱到清晰,轻松转换日期格式
47 1
|
5月前
|
JSON 安全 JavaScript
SpringBoot时间格式化
SpringBoot时间格式化
|
4月前
|
设计模式 JSON 前端开发
SpringBoot中对LocalDateTime进行格式化并解析
SpringBoot中对LocalDateTime进行格式化并解析
141 0
|
8月前
|
JSON 人工智能 Java
SpringBoot实战(九):标准化json返回值
SpringBoot实战(九):标准化json返回值
|
JSON Java 数据格式
SpringBoot 使用 jackson 格式化时间
在实际开发中我们经常会与时间打交道,那这就会涉及到一个时间格式转换的问题。接下来会介绍几种在SpirngBoot中如何对时间格式进行转换。
460 2
|
1月前
|
监控 Java
【十一】springboot整合异步调用并获取返回值
【十一】springboot整合异步调用并获取返回值
31 0
|
3月前
|
JSON 前端开发 Java
SpringBoot 日期&时间格式化处理
SpringBoot 日期&时间格式化处理
59 0
|
6月前
|
缓存 前端开发 安全
SpringBoot如何缓存方法返回值?
为什么要对方法的返回值进行缓存呢? 简单来说是为了提升后端程序的性能和提高前端程序的访问速度。减小对db和后端应用程序的压力。 一般而言,缓存的内容都是不经常变化的,或者轻微变化对于前端应用程序是可以容忍的。 否则,不建议加入缓存,因为增加缓存会使程序复杂度增加,还会出现一些其他的问题,比如缓存同步,数据一致性,更甚者,可能出现经典的缓存穿透、缓存击穿、缓存雪崩问题。
31 0
|
fastjson Java 数据格式
springboot使用fastjson格式化日期数据不生效
springboot使用fastjson格式化日期数据不生效
springboot使用fastjson格式化日期数据不生效