日期:2014-05-16  浏览次数:20759 次

关于JSON数据传输效率的一点看法 - Web 开发 / Ajax
通过JSON返回的服务器数据的一般表现形式:
{ records:3,
  page:1,
  pagesize:20,
  searchstr:"J",
  datas:[
  {sid:"41",sname:"Jacky",score:"79"},
  {sid:"46",sname:"Jannie",score:"90"},
  {sid:"87",sname:"Johnson",score:"56"}]
}

这个形式有个好处,调用数据可以直接引用字段名,但是有个缺陷就是明显浪费带宽,因为储存了大量的重复字段名称。

因此认为可以改进:

{ records:3,
  page:1,
  pagesize:20,
  searchstr:"J",
  fields:["sid","sname","score"]
  datas:[
  ["41","Jacky","79"],
  ["46","Jannie","90"],
  ["87","Johnson","56"]]
}


各位认为哪种方法比较好?


------解决方案--------------------
我个人还是支持上面的写法。这样取值是超级无敌方便的了。
这个比起用XML来传输数据并解析数据,已经节约很多很多的带宽了。
我们做项目时候,并不是要求选择带宽占用最小的,而是选择解析速率最高的,最合适的方法。
------解决方案--------------------
如果你的数据量特别大的话,我是比较赞同第二种写法的。你只需要写一个WRAPPER通过KEY来取VALUE就可以了。

------解决方案--------------------
CSS code

第一种显示字段名称,字段多就浪费带宽。但是在字段多的时候 可读性 就比较强了。
第二种相反,字段多的时候可读性很差的,你知道在字段多的时候,数组中对应的字段是哪个吗?
所以要看情况,而定!!!

------解决方案--------------------
探讨

就经常的应用而言,都是把JSON的信息直接输出成table进行显示,基本不会用到什么调用,所以还是第二种情况值得采用,节省流量约30~40%,以返回记录数100条,字段20个,每个字段节省10个字节来算,原来需要传递60K,现只需要传递40K

------解决方案--------------------
探讨

引用:

就经常的应用而言,都是把JSON的信息直接输出成table进行显示,基本不会用到什么调用,所以还是第二种情况值得采用,节省流量约30~40%,以返回记录数100条,字段20个,每个字段节省10个字节来算,原来需要传递60K,现只需要传递40K

我支持第一种的,结构优良,维护成本低。

每次传输json也就几K。。。达到几十K的可能性比较小。……

------解决方案--------------------
探讨

引用:

如果为了节省这数据,全部用数组传输不是更好?[3,1,20,[],[[],[]]]

------解决方案--------------------
if 字段多,数据量大 
return 方法二
else 
if 提取和维护方便
return 方法一 or json
else 
return 数组

视情况而定吧,但这是应该思考的