- 目前版本的fastjon默认对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序列化即可。int features=SerializerFeature.config(JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.WriteEnumUsingName, false)
JSON.toJSONString(obj,features,SerializerFeature.EMPTY);
相关文章
- 关于C#对Json进行序列化和反序列化的方法
- com.alibaba.fastjson.JSON对类对象的序列化与反序列化
- 基于SqlSugar的开发框架循序渐进介绍(24)-- 使用Serialize.Linq对Lambda表达式进行序列化和反序列化 基于SqlSugar的开发框架循序渐进介绍(5)-- 在服务层使用接口注入方式实现IOC控制反转 基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传 基于SqlSugar的开发框架循序渐进介绍(12)-- 拆分页面模块内容为组件,实现分而治之的处理 基于SqlSugar的开发框架循序渐进介绍(14)-- 基于Vue3+TypeScript的全局对象的注入和使用 基于SqlSugar的开发框架循序渐进介绍(16)-- 工作流模块的功能介绍 基于SqlSugar的开发框架循序渐进介绍(17)-- 基于CSRedis实现缓存的处理 基于SqlSugar的开发框架循序渐进介绍(21)-- 在工作流列表页面中增加一些转义信息的输出,在后端进行内容转换 基于SqlSugar的开发框架循序渐进介
- fastjson 远程反序列化poc的构造和分析
- FastJson 对enum的 序列化(ordinal)和反序列化
- SpringBoot中使用Fastjson/Jackson对JSON序列化格式化输出的若干问题
- 【Springboot】FastJson与Jackson全局序列化方式的配置和相关工具类
- fastjson 远程反序列化poc的构造和分析
- 使用Scala和Jackson以及java.lang.Integer或scala.Int对泛型类型进行奇怪的反序列化问题
- 在序列化方面,Spring会话范围的bean(控制器)和对服务的引用