一 例子

package com.test.conf;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 org.springframework.http.converter.HttpMessageConverter;import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;@Configuration
public class JsonConfig {/*** @Author anson* @Description 配置消息转换器* @Date: 2019-12-8 11:23:33* @version: 1.0* new HttpMessageConverters(true, converters);* 一定要设为true才能替换否则不会替换* @return 返回一个消息转换的bean*/@Beanpublic HttpMessageConverters fastJsonMessageConverters() {List<HttpMessageConverter<?>> converters = new ArrayList<>();//需要定义一个convert转换消息的对象;FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();//添加fastJson的配置信息;FastJsonConfig fastJsonConfig = new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);//不过滤null值fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);//全局时间配置fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");fastJsonConfig.setCharset(Charset.forName("UTF-8"));//处理中文乱码问题List<MediaType> fastMediaTypes = new ArrayList<>();fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);//在convert中添加配置信息.fastConverter.setSupportedMediaTypes(fastMediaTypes);fastConverter.setFastJsonConfig(fastJsonConfig);converters.add(0, fastConverter);return new HttpMessageConverters(converters);}
}

二 配置信息

名称 含义
QuoteFieldNames 输出key时是否使用双引号,默认为true    
UseSingleQuotes 使用单引号而不是双引号,默认为false
WriteMapNullValue 是否输出值为null的字段,默认为false
WriteEnumUsingToString Enum输出name()或者original,默认为false     
UseISO8601DateFormat Date使用ISO8601格式输出,默认为false    
WriteNullListAsEmpty List字段如果为null,输出为[],而非null     
WriteNullStringAsEmpty 字符类型字段如果为null,输出为”“,而非null
WriteNullNumberAsZero 数值字段如果为null,输出为0,而非null     
WriteNullBooleanAsFalse Boolean字段如果为null,输出为false,而非null     
SkipTransientField 如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true
SortField 按字段名称排序后输出。默认为false    
WriteTabAsSpecial 把\t做转义输出,默认为false
PrettyFormat 结果是否格式化,默认为false
WriteClassName 序列化时写入类型信息,默认为false。反序列化是需用到    
DisableCircularReferenceDetect 消除对同一对象循环引用的问题,默认为false    
WriteSlashAsSpecial 对斜杠’/’进行转义    
BrowserCompatible 将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false
WriteDateUseDateFormat 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
DisableCheckSpecialChar 一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false    
NotWriteRootClassName  不知道
BeanToArray 将对象转为array输出    
WriteNonStringKeyAsString 不是String的字段写为String    
NotWriteDefaultValue 不设默认值     
BrowserSecure  不知道
IgnoreNonFieldGetter 忽略没有getter方法的属性
WriteEnumUsingName

目前版本的fastjson默认对enum对象使用WriteEnumUsingName属性,因此会将enum值序列化为其Name。
使用WriteEnumUsingToString方法可以序列化时将Enum转换为toString()的返回值;同时override toString函数能够将enum值输出需要的形式。但是这样做会带来一个问题,对应的反序列化使用的Enum的静态方法valueof可能无法识别自行生成的toString(),导致反序列化出错。
如果将节省enum序列化后的大小,可以将enum序列化其ordinal值,保存为int类型。fastJson在反序列化时,如果值为int,则能够使用ordinal值匹配,找到合适的对象。
fastjson要将enum序列化为ordinal只需要禁止WriteEnumUsingName feature。
首先根据默认的features排除WriteEnumUsingName,然后使用新的features序列化即可。

FastJson 配置相关推荐

  1. FastJson配置

    @Bean//使用@Bean注入fastJsonHttpMessageConvertpublic HttpMessageConverter fastJsonHttpMessageConverters( ...

  2. 第五章:配置使用FastJson返回Json视图

    fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件.它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作js ...

  3. FastJson/spring boot: json输出

    1.引入FastJson依赖包 <!-- FastJson --><dependency><groupId>com.alibaba</groupId>& ...

  4. fastjson @JSONField format 不生效的原因

    (以下问题已在fastjson高版本优化<目前我用的是1.2.83版本>) 在一次接手项目中发现,http接口返回json数据,Date类型的变量用@JSONField format注解格 ...

  5. Spring data redis乱码问题

    SpringBoot提供Redis存储序列化,常用的有一下几种: JdkSerializationRedisSerializer:将数据序列化为对象 默认的 StringRedisSerializer ...

  6. spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获

    spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获 当你的某个控制器内的某个方法报错,基本上回显示出java错误代码,非常不友好,这 ...

  7. 前后端分离中使用基于jwt的token进行身份认证

    基于jwt的Token认证机制可以看之前的文章: 基于JWT的Token认证机制实现 在前后端分离中,我们与前端约定一种身份认证机制.当用户登录的时候,我们会返回给前端一个token,前端会将toke ...

  8. 分布式文件服务器FastDFS

    目录 1.什么是FastDFS 2.文件上传和下载流程 (1)文件上传流程 (2)文件下载流程 3.FastDFS图片上传及回显的案例 (1)导入pom依赖 (2)导入springmvc的配置和Fas ...

  9. SpringMVC学习笔记

    文章目录 SpringMVC学习笔记 Spring MVC 什么是 MVC 设计模式? Spring MVC 的核心组件 Spring MVC 的工作流程 如何使用? Spring MVC 注解 Sp ...

最新文章

  1. .net平台性能很不错的轻型ORM类Dapper(转)
  2. c#_winform_选择文件保存路径
  3. 渗透测试中的文件传输技巧
  4. svchost服务(DLL服务)
  5. hello!everyone.大家好,我是新人
  6. 无锁链表的c++实现
  7. python语言用法_python语言基本语句用法总结(1.)
  8. 你的知识死角不能否定你的技术能力
  9. grep搜索子目录中包含某字符串的特定文件
  10. JS编程建议——32:使用制表
  11. telnet命令 date命令
  12. python写入txt,读取txt,拷贝txt文件
  13. onload、onunload 和 onbeforeunload的区别
  14. Python函数总结大全(函数定义,参数种类、返回值等)
  15. 元学习—MAML模型Pytorch实现
  16. 修改计算机的用户名小工具,修改电脑用户名win10
  17. 浅析网站被挂马的代码
  18. Google搜索技巧语法
  19. 克莱姆森大学计算机排名,2020年克莱姆森大学排名TFE Times美国最佳计算机科学硕士专业排名第102...
  20. python 头条视频_Python视频爬虫实现下载头条视频

热门文章

  1. 计算机网络-08 FIA
  2. 00000_开张大吉
  3. English Word —— Day 38——四级中学已学单词表
  4. 七彩虹DDR5主板四根开启XMP教程
  5. fabric协议规范
  6. 如何内网映射拥有自己的域名
  7. 华盛顿邮报:iPad 2将扩展抢先职位
  8. 崔西凡JavaWeb笔记day16~day18(2016年9月19日13:06:38)
  9. talib包计算MACD值和行情软件有差异的解决方法
  10. mysql 数据库排序规则