JSON数据结构优化的突发奇想

JSON数据结构优化的突发奇想


@(标签)[数据结构,JSON,数据优化,性能优化,钟子路,zhongzilu,bit100]

JSON对于做网络软件开发的人来说再熟悉不过了,大多数开发者都是把数据封装成JSON格式,然后把数据从服务端传递到客户端。

但随着人们对信息的需求越来越多,要传递的数据也越来越大,网络和设备的开销也越来越大,对于用户来说,移动设备上请求大量的网络数据会造成昂贵的流量费用,同时,解析大量的JSON数据也难免会造成移动设备出现卡顿现象,因此,优化JSON数据就是很有必要的事情。

那么,如何优化JSON数据呢?

假设这里有个实体类对象

public class Person {
       private String name;
       private int age;
       ······
       public String getName();
       public void setName(String name);
       ·······
}

以往我们在传递对象集合数据的时候,通常是这样的

{
"Persons":[
{"name":"张三","age":16},
{"name":"李四","age":18},
{"name":"王二","age":17},
···········
]
}

因为这种方式符合面向对象的设计,同时也很方便封装,由于是通过对象的构造方法实现的,我们暂且称之为对象构造数组

其实仔细观察分析,这一串JSON数据当中,有很多数据是重复的,比如nameage,不同的只是他们的值

所以,我们其实可以这样来设计JSON格式,如下

{
"Persons":{
"name":["张三","李四","王二",.....],
"age":[16,18,17,......]
}
}

相同属性的不同值用一个数组来保存,这样结构更加清晰,且能有效减少JSON的数据大小。

优化过后的JSON数据不仅能节省网络传输时间和网络流量费用,还能根据不同数据类型,采用不同的压缩算法,使压缩算法进行压缩时更加高效,例如GZip算法,同时,还能减少移动设备因解析数据造成的卡顿现象。

就目前看来这种方式只停留在想法阶段,还没有能够实现的解析库供使用,希望有热心人士能开发出一套高效的解析库,将想法变成现实( ^_^ )。

Thanks for watching!

作者:钟子路
转载请注明出处:https://zhongzilu.github.io/2017/03/06/JSON数据结构优化的突发奇想/

本文总阅读量