一种JSON数据包的动态无损压缩方法技术

技术编号:18208511 阅读:21 留言:0更新日期:2018-06-13 08:13
本发明专利技术公开了一种JSON数据包的动态无损压缩方法,涉及通信协议、数据压缩领域。该方法包括JSON数据包压缩流程和JSON数据包解压缩流程;所述JSON数据包压缩流程通过扫描器、编码器、格式检查器完成;所述JSON数据包解压缩流程通过格式检查器、解码器完成。本发明专利技术有效降低了JSON数据的大小,JSON数据包越大时,压缩效果越好,压缩率越高。

【技术实现步骤摘要】
一种JSON数据包的动态无损压缩方法
本专利技术涉及通信协议、数据压缩领域,具体是一种JSON数据包的动态无损压缩方法。
技术介绍
JSON是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。所以JSON常取代XML用来在服务器和客户端之前传输数据。但当传输的数据量过大时,JSON在移动互联网应用中的劣势也随之而来,导致消耗流量、带宽等网络资源过大。针对以上问题,出现了一些JSON数据的压缩算法。目前一些开源的JSON数据压缩算法都是改变JSON的数据结构来实现压缩。处理的方式是对JSON数据中重复的key或者value进行处理,这样虽能达到压缩的目的,但当JSON数据中属性太多或者属性过长时,压缩的效果并不理想。
技术实现思路
为了克服上述现有技术的缺点,本专利技术的技术方案在吸取了一些开源算法的优点的同时,针对JSON数据中属性太多或者属性过长的问题,又对现有的算法进行了改进。旨在提供一种更高效快捷的JSON数据包的动态无损压缩方法。本专利技术是以如下技术方案实现的:一种JSON数据包的动态无损压缩方法,该方法包括JSON数据包压缩流程和JSON数据包解压缩流程;所述JSON数据包压缩流程通过扫描器、编码器、格式检查器完成;所述JSON数据包解压缩流程通过格式检查器、解码器完成。优选的是,所述JSON数据包压缩流程包括如下步骤:步骤一:数据发送方在发送JSON数据包之前,扫描器会对JSON数据包中所有的key和value进行扫描,将重复的key和value记录下来,同时扫描器也将记录key过长的值,以备之后的编码器对其进行适当压缩;步骤二:编码器将对扫描器扫描的结果进行压缩处理,对于重复的key和value这种情况,编码器将重复的key和value记录到数据字典中,并以唯一的序号区分,并用key和value在数据字典中对应的序号替换原JSON数据包中的key和value,而对于key值过长的情况,编码器同样将其记录到数据字典并以唯一序号区分且替换掉原JSON数据包中的key值,待替换工作完成后,编码器将数据字典和替换压缩后的JSON数据包组成新的JSON数据包;步骤三:格式检查器将编码器压缩后新生产的JSON数据包进行格式检查,确保压缩后的JSON数据包格式正确;若格式正确则返回压缩后的JSON数据包,否则返回错误信息,并重新执行步骤二。优选的是,编码器中用于记录重复key和value以及长度过长的key的数据字典是一个map,为使得压缩的JSON数据包尽可能小,压缩率尽可能高,规定数据字典中key的数据类型使用int类型,value的数据类型使用string类型。优选的是,编码器维护数据字典,保存需要被压缩或处理的key和value,被保存的值对应的序号是全局唯一的,序号分配原则是从1开始递增分配。优选的是,原JSON数据中重复的key和value以及过长的属性值被序号替换时,序号前以“*”开头作为为标识符,用于解码器还原数据使用,当原JSON数据中包括特殊字符“*”时,用以“\”字符进行转义。优选的是,格式检查器严格按照JSON键值对的格式检查被压缩处理后的JSON数据包,格式正确则原样返回,格式错误则给出提示信息。优选的是,所述JSON数据包解压缩流程包括如下步骤:步骤一:数据接收方在收到压缩后的JSON数据包后,格式检查器对接收的JSON数据包进行格式检查,以防止数据在传输过程或其他环节出现数据丢失的问题,若格式正确则执行步骤二,否则返回错误信息;步骤二:解码器将对格式检查器输出的JSON数据包进行解码还原成原JSON数据包,并返回给数据的接收方。优选的是,所述解码器的工作流程包括如下步骤:步骤一:解码器首先根据固定的key值获取JSON数据包中对应的数据字典;步骤二:获取到数据字典后,解码器遍历JSON数据包中所有以标识符“*”开头的属性值,在数据字典中查找序号对应的具体值,并将所得值替换回标识符的位置,直到遍历完JSON数据包中所有的键值对;步骤三:替换完成后生成新的JSON数据包并返回给用户。与现有技术方案相比,本专利技术的有益效果是:(1)集成了已有技术方案的优点;(2)有效解决了JSON数据中属性过多或者属性过长的这种情况,对现有的算法进行了改进,提高了JSON数据包的压缩率,减少带宽、流量等网络资源。附图说明图1为本专利技术中的整体结构示意图;图2为本专利技术中JSON数据包压缩工作流程图;图3为本专利技术中JSON数据包解压缩工作流程图;图4为本专利技术中解码器的工作流程图。具体实施方式以下结合附图,通过具体实施方式对本专利技术作进一步的说明。如图1所示,一种JSON数据包的动态无损压缩方法,本方法共有扫描器、编码器、格式检查器、解码器四个部分。首先数据发送方在发送JSON数据包之前,扫描器会对JSON数据包中所有的key和value进行扫描,将重复的key和value记录下来,同时扫描器也将记录key过长的值,以备编码器对其进行适当压缩;其次编码器将对扫描的结果进行处理,对于重复的key和value这种情况,编码器将其记录到数据字典中,以唯一的序号区分,并用序号替换原JSON数据包中的key和value,对于key值过长的情况,编码器同样将其记录到数据字典并以唯一序号区分且替换掉原JSON数据包中的key值,待替换工作完成后,编码器将数据字典和替换后的JSON数据包组成新的JSON数据包;然后格式检查器将对新生产的JSON数据包进行格式检查,确保压缩后的JSON数据包格式正确;最后当数据接收方需要解析压缩后的JSON时,解码器将对压缩的JSON数据包进行解码还原成原JSON数据包。如图2所示,JSON数据包压缩流程通过扫描器、编码器、格式检查器完成,其工作流程具体如下:步骤一:数据发送方在发送JSON数据包之前,扫描器会对JSON数据包中所有的key和value进行扫描,将重复的key和value记录下来,同时扫描器也将记录key过长的值,以备之后的编码器对其进行适当压缩;步骤二:编码器将对扫描器扫描的结果进行压缩处理,对于重复的key和value这种情况,编码器将重复的key和value记录到数据字典中,并以唯一的序号区分,并用key和value在数据字典中对应的序号替换原JSON数据包中的key和value,而对于key值过长的情况,编码器同样将其记录到数据字典并以唯一序号区分且替换掉原JSON数据包中的key值,待替换工作完成后,编码器将数据字典和替换压缩后的JSON数据包组成新的JSON数据包;步骤三:格式检查器将编码器压缩后新生产的JSON数据包进行格式检查,确保压缩后的JSON数据包格式正确;若格式正确则返回压缩后的JSON数据包,否则返回错误信息,并重新执行步骤二。进一步的方案为:编码器中用于记录重复key和value以及长度过长的key的数据字典是一个map,为使得压缩的JSON数据包尽可能小,压缩率尽可能高,规定数据字典中key的数据类型使用int类型,value的数据类型使用string类型。本文档来自技高网...
一种JSON数据包的动态无损压缩方法

【技术保护点】
一种JSON数据包的动态无损压缩方法,其特征在于:该方法包括JSON数据包压缩流程和JSON数据包解压缩流程;所述JSON数据包压缩流程通过扫描器、编码器、格式检查器完成;所述JSON数据包解压缩流程通过格式检查器、解码器完成。

【技术特征摘要】
1.一种JSON数据包的动态无损压缩方法,其特征在于:该方法包括JSON数据包压缩流程和JSON数据包解压缩流程;所述JSON数据包压缩流程通过扫描器、编码器、格式检查器完成;所述JSON数据包解压缩流程通过格式检查器、解码器完成。2.根据权利要求1所述的一种JSON数据包的动态无损压缩方法,其特征在于,所述JSON数据包压缩流程包括如下步骤:步骤一:数据发送方在发送JSON数据包之前,扫描器会对JSON数据包中所有的key和value进行扫描,将重复的key和value记录下来,同时扫描器也将记录key过长的值,以备之后的编码器对其进行适当压缩;步骤二:编码器将对扫描器扫描的结果进行压缩处理,对于重复的key和value这种情况,编码器将重复的key和value记录到数据字典中,并以唯一的序号区分,并用key和value在数据字典中对应的序号替换原JSON数据包中的key和value,而对于key值过长的情况,编码器同样将其记录到数据字典并以唯一序号区分且替换掉原JSON数据包中的key值,待替换工作完成后,编码器将数据字典和替换压缩后的JSON数据包组成新的JSON数据包;步骤三:格式检查器将编码器压缩后新生产的JSON数据包进行格式检查,确保压缩后的JSON数据包格式正确;若格式正确则返回压缩后的JSON数据包,否则返回错误信息,并重新执行步骤二。3.根据权利要求2所述的一种JSON数据包的动态无损压缩方法,其特征在于:编码器中用于记录重复key和value以及长度过长的key的数据字典是一个map,为使得压缩的JSON数据包尽可能小,压缩率尽可能高,规定数据字典中key的数据类型使用int类型,value的数据类型使用string类型。4.根据...

【专利技术属性】
技术研发人员:张启亮韩键黄凯
申请(专利权)人:江苏徐工信息技术股份有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1