Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比XML更节省带宽的数据格式&;JSON?_Javascript_.net_Ajax_Xml_Json - Fatal编程技术网

Javascript 比XML更节省带宽的数据格式&;JSON?

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>

当以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),然后对其进行压缩。例如,您可以使用。优点:您不必转换基本数据结构

此外,如果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进行调试的额外好处。但是,如果你能用二进制来做,用二进制来做就更好了;至少在我正在使用的服务器上,当它看到二进制数据时,它吓了一跳。这对你来说也不是问题。