Javascript 比XML更节省带宽的数据格式&;JSON?
当以JSON或XML格式将大量列数据从web服务器传输到浏览器时,每行都会重复不必要的列名。我需要传输的基本上是CSV格式的数据,即多行数据,每行具有相同的字段顺序 例如,在XML中,我将传输:Javascript 比XML更节省带宽的数据格式&;JSON?,javascript,.net,ajax,xml,json,Javascript,.net,Ajax,Xml,Json,当以JSON或XML格式将大量列数据从web服务器传输到浏览器时,每行都会重复不必要的列名。我需要传输的基本上是CSV格式的数据,即多行数据,每行具有相同的字段顺序 例如,在XML中,我将传输: <row> <name>Frank</name> <city>New York</city> </row> <row> <name>Brian</name> <city>
<row>
<name>Frank</name>
<city>New York</city>
</row>
<row>
<name>Brian</name>
<city>Jerusalem</city>
</row>
etc..
直率的
纽约
布瑞恩
耶路撒冷
等
与JSON相同,字段名被不必要地重复,这会无缘无故地变成大量额外字节
我的问题是,是否有其他标准格式,由Javascript和/或.NET中的库支持,我可以使用它们来更有效地传输这种“类似CSV”的数据集?除非您谈论的是大量数据,否则可能没那么重要(带宽很便宜,或者我听说是这样)。但是,如果您试图将尽可能多的数据压缩到可用带宽中,那么您确实有选择 您可以使用您想要的任何格式(XML、JSON),然后对其进行压缩。例如,您可以使用。优点:您不必转换基本数据结构 此外,如果CSV是最适合您的应用程序的格式,那么没有什么可以阻止您使用CSV。最好使用诸如的库来处理诸如正确引用字符串之类的麻烦。缺点:这不是真正的压缩;只是一种没有太多开销的格式
总而言之,我可能会选择第一种方法。我猜您的json格式如下:
[
{
"name": "Frank",
"city": "New York"
},
{
"name": "Brian",
"city": "Jerusalem"
}
]
为什么不简单地将其更改为:
[
["name", "city"],
["Frank", "New York"],
["Brian", "Jerusalem"]
]
当通过XML从Flash(运行在客户端,类似于JavaScript)和.NET(运行在服务器上)传输大量数据时,我遇到了类似的问题 我最终使用的方法是:
XML > string without whitespace > zip compress > base64 encoded
然后在另一边,做相反的事情
在你的情况下,你可以这样做
CSV > string > zip > base64
从内存中,我可以获得一些非常大的有效负载(约2mb),降至50kb以下那么,为什么不使用CSV呢?您还可以将服务器设置为gzip数据,这可能会节省最多的带宽。为什么这个问题太广泛?在试图节省服务器和客户端之间的带宽时,可用的选项非常有限;所以答案是有限的。如果有人可以投票关闭这个问题,为什么其他人不能投票重新打开它呢?补充一下,我选择了zlib压缩,因为我可以同时使用客户端(Flash)和服务器(.NET)端。我相信zlib在JavaScript中是可用的,作为一个库。非常感谢,我不知道基于JS的解压。但是为什么base64编码——这不只是给传输增加了更多的容量吗?是的,增加了更多的容量,但它确保您的数据是纯文本,否则它将是二进制的。我从来没能让二进制文件工作,而且我在压缩后保存了太多数据,以至于base64编码添加的数据相对较少,特别是通过Fiddler进行调试的额外好处。但是,如果你能用二进制来做,用二进制来做就更好了;至少在我正在使用的服务器上,当它看到二进制数据时,它吓了一跳。这对你来说也不是问题。