SpringBoot中fastJson返回数据展示null字段(响应值为null时字段被过滤)
fastjson
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
项目地址:https://gitcode.com/gh_mirrors/fastj/fastjson
·
fastjson将对象转为json字符串给前端的时候, 如果字段的值为null, 则该字段默认被fastJson过滤直接不展示. 而在实际项目中我们往往也是需要展示这个字段的 , 解决即增加一个fastJson序列化配置 , 设置序列化格式.
package com.xbz.mvc.config;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import java.util.ArrayList;
import java.util.List;
/**
* @title fastjson前端响应处理
* @description 需要正常返回null值的字段
* @author Xingbz
* @createDate 2019-10-15
*/
@Configuration
public class FastJsonMvcConfig {
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
//1.定义一个convert消息转换对象
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//2.添加fastJson的序列化配置信息
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullListAsEmpty);
//3.处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
//4.在convert中添加配置信息
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters(fastJsonHttpMessageConverter);
}
}
fastJson序列化格式(SerializerFeature属性)配置如下 :
| 名称 | 说明 | 缺省值 |
|---|---|---|
| QuoteFieldNames | 输出key时是否使用双引号 | true |
| UseSingleQuotes | 使用单引号而非双引号 | false |
| WriteMapNullValue | 是否输入值为null的key字段 | false |
| WriteEnumUsingToString | Enum输出name()或original | false |
| UseISO8601DateFormat | Date使用ISO8601格式输出 | false |
| WriteNullListAsEmpty | list字段如果为null,则输出[] | false |
| WriteNullStringAsEmpty | 字符串字段如果为null,则输出"" | false |
| WriteNullNumberAsZero | 数值字段如果为null,则输出0 | false |
| WriteNullBooleanAsFalse | 布尔字段如果为null,则输出false | false |
| SkipTransientField | 对象中的属性是transient修饰的,序列化时将会被忽略 | true |
| SortField | 按字段名称排序后输出 | false |
| WriteTabAsSpecial | 将\t制表符做转义输出(不推荐使用) | false |
| PrettyFormat | 输出内容是否格式化 | false |
| WriteClassName | 序列化时写入类型信息. 反序列化时会用到 | false |
| DisableCircularReferenceDetect | 消除对同一对象循环引用的问题 | false |
| WriteSlashAsSpecial | 对/斜杠进行转义 | false |
| BrowserCompatible | 将中文汉字都转为\uXXXX格式, 字节数会多一些,但兼容IE6 | false |
| WriteDateUseDateFormat | 全局日期格式修改. JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); | false |
| DisableCheckSpecialChar | 字符串value中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符 | false |
| NotWriteRootClassName | ||
| BeanToArray | 将对象转为数组输出 | false |
| WriteNonStringKeyAsString | ||
| NotWriteDefaultValue | ||
| BrowserSecure | ||
| IgnoreNonFieldGetter | 忽略没有get方法的字段 | false |
| WriteEnumUsingName |
更多更详细说明可参见此博文 https://blog.csdn.net/u010246789/article/details/52539576
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:4 个月前 )
c942c834 - 2 年前
5bc4709b - 2 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)