当以 JSON 或 XML 格式将大量列式数据从 Web 服务器传输到浏览器时,每一行的列名都会不必要地重复。我必须传输的基本上是CSV格式 - 即。多行数据,每行具有相同的字段顺序。
例如,在XML中,我将传输:
<row>
<name>Frank</name>
<city>New York</city>
</row>
<row>
<name>Brian</name>
<city>Jerusalem</city>
</row>
etc..
与 JSON 相同,字段名称不必要地重复,这会无缘无故地变成大量额外的字节。
我的问题是,是否有其他标准格式,Javascript和/或.NET中的库支持,我可以用来更有效地传输这种"类似CSV"的数据集?
除非你谈论的是大量数据,否则可能并不重要(带宽很便宜,或者我听说)。 但是,如果您尝试将尽可能多的数据压缩到可用带宽中,则可以选择。
您可以使用任何您想要的格式(XML,JSON),然后压缩它。 例如,您可以使用 JSZip。 优点:您不必转换基本数据结构。
此外,如果CSV格式对您的应用程序最有意义,则没有什么可以阻止您使用CSV。 最好使用像jquery-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