文档章节

改进fastjson的WriteClassName特性时的输出数据容量

阿阮
 阿阮
发布于 2015/07/14 09:13
字数 308
阅读 615
收藏 3

在使用fastjson输出省市县三级信息时,数量高达300K,由于我们的数据结构相同,因此每个类都输出了完整的类名称

因此,是否可以采用索引方式用简单的数字引用达到减轻很长类名称的作用呢?

因此,我们设计一种简单类名称扩展

    1."@type":"com.hd.doctor.mobile.api.DictionaryBean#1"表示一个完整的类名称并且带有一个1的索引号,表示该类名被索引化

    2. "@type":"#1" 则表示该类名称引用之前被索引化的类名称,从而找到类名称com.hd.doctor.mobile.api.DictionaryBean

 解决方案:

  1. SerilaizeFeature 中添加WriteClassNameRef特性,该特性仅仅在WriteClassName支持的情况下才有效

  2. 序列化时,判断是否支持WriteClassRef特性,是则判断该类名是否已经被索引,是则直接输出#{索引},否则输出类名+#{新索引}

    3.反序列化时,以相反的角度判断类名和处理

经过测试,数据从300k降低到了173k



© 著作权归作者所有

阿阮
粉丝 36
博文 11
码字总数 3987
作品 0
海淀
架构师
私信 提问
fastjson 1.1.13 发布

这个版本修复了一个Critical级别的bug,也就是打开WriteClassName选项之后,long类型的数值序列化之后,反序列化的结果错误。 建议使用了WriteClassName特性的用户,升级到1.1.13这个版本。 ...

咖啡碼農
2011/12/15
1K
0
fastjson发布1.1.3版本

Fastjson 1.1.3是一个重要的功能增强版本,在这个版本开始,fastjson支持循环引用,完善支持WriteClassName的特性,使得fastjson开始具备替换hessian和java serialize的能力。 支持循环引用。...

wenshao
2011/08/29
2.1K
4
Fastjson 的 Set类型和 WriteClassName 选项引起的BUG

使用 fastjson 序列化一个JAVABEAN对象时,如果属性有 Set 表示的集合的时候,如果写JSON时,设置了 WriteClassName 选项,Set 属性值会被写成 "Set[{}]",反序列化的时候,一定会出错。 解决...

阿影
2014/01/15
351
0
Fastjson SerializerFeature详解

SerializerFeature属性 示例 准备 User、Word来模拟各种数据类型。 SerializerFeatureTest:JSON部分示例的示例方法。 User类型:缺省get、set方法 Word类型:缺省get、set方法 SerializerFe...

yuanlaijike
2017/12/14
0
0
fastjson发布1.2.21版本

这是一个Bug修复版本,修复大家反馈的问题。 Bug Fixed 修复@JSONField.name配置包含特别字符报错的问题 #887 WriteClassName时自动识别代理类 #872 对象同时为Key和Value时引用计算出错 #6...

wenshao
2016/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
55分钟前
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
56分钟前
7
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
59分钟前
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
今天
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部