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数据当中,有很多数据是重复的,比如name
,age
,不同的只是他们的值
所以,我们其实可以这样来设计JSON格式,如下
{
"Persons":{
"name":["张三","李四","王二",.....],
"age":[16,18,17,......]
}
}
相同属性的不同值用一个数组来保存,这样结构更加清晰,且能有效减少JSON的数据大小。
优化过后的JSON数据不仅能节省网络传输时间和网络流量费用,还能根据不同数据类型,采用不同的压缩算法,使压缩算法进行压缩时更加高效,例如GZip算法,同时,还能减少移动设备因解析数据造成的卡顿现象。
就目前看来这种方式只停留在想法阶段,还没有能够实现的解析库供使用,希望有热心人士能开发出一套高效的解析库,将想法变成现实( ^_^ )。
Thanks for watching!
作者:钟子路
转载请注明出处:https://zhongzilu.github.io/2017/03/06/JSON数据结构优化的突发奇想/