将大型数据集传递给客户端 - Javascript数组还是JSON?

Jon*_*han 4 javascript json dataset

我正在向客户端传递一个最多1000行的表,其中包括名称,ID,纬度和经度值.

然后,该列表将由Javascript处理并转换为Google地图上的标记.

我最初计划用JSON做这个,因为我希望代码可读且易于处理,并且因为我们可能会随着时间的推移添加更多结构.

但是,我的同事建议将其作为Javascript数组传递,因为它会大大减小大小.

这让我想到,也许JSON有点多余.毕竟,对于定义的每一行,每个字段的名称也是重复输出的.然而,对于阵列,单元的位置用于指示场.

但是,通过使用数组真的会有性能提升吗?

该网站使用GZIP压缩.此压缩是否足以处理JSON字符串中的任何冗余?

[编辑]

我意识到JSON只是一种表示法.

但我真正的问题是 - 表现最好的表现方式是什么?

如果我使用完全命名的属性,那么我可以使用这样的代码:

var x = resultset.rows[0].name;
Run Code Online (Sandbox Code Playgroud)

然而,如果我不这样做,它将看起来不那么可读,如下所示:

var x = resultset.rows[0][2];
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 代码可读性的牺牲是否值得为性能提升?或不?


附加说明:

根据维基百科,Deflate压缩算法(由gzip使用)执行'Duplicate string elimination'.http://en.wikipedia.org/wiki/DEFLATE#Duplicate_string_elimination

如果这是正确的,我没有理由担心JSON中的任何冗余,因为它已经被处理掉了.

Pas*_*TIN 9

JSON只是一种符号(Javascript Object Notation),包括JS数组 - 即使名称中有"object"一词.

http://json.org/上查看它的语法,它定义了这样的数组(引用):

数组是有序的值集合.数组以[(左括号)开头,以(右括号)结尾].值以, (逗号)分隔.

这意味着这(取自JSON数据集示例)将是有效的JSON:

[ 100, 500, 300, 200, 400 ]
Run Code Online (Sandbox Code Playgroud)

即使它不包括也不声明任何对象.


在你的情况下,我想你可以使用一些数组,按位置存储数据,而不是按名称存储数据.

如果你担心大小,你可能想要自己"压缩"服务器端的数据,并在客户端解压缩它 - 但我不会这样做:这意味着你需要更多的处理客户端的时间/功率......

我更愿意使用包含数据的页面进行压缩:你将无所事事,它是全自动的,它可以正常工作 - 并且尺寸的差异可能不会引人注意.