比XML和JSON更节省带宽的数据格式?



当以 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

最新更新