比XML和&amp ;;更高带宽效率的数据格式JSON?

时间:2014-02-17 01:45:19

标签: javascript .net ajax 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”的数据集?

3 个答案:

答案 0 :(得分:1)

除非你在谈论很多数据,否则它可能并不重要(带宽很便宜,或者我听说过)。但是,如果您尝试将尽可能多的数据压缩到可用带宽中,则可以选择。

您可以使用任何您想要的格式(XML,JSON),然后压缩它。例如,您可以使用JSZip。优点:您不必转换基本数据结构。

此外,如果这种格式对您的应用程序最有意义,那么没有什么可以阻止您使用CSV。最好使用像jquery-csv这样的库来处理正确引用字符串等烦恼。缺点:这不是真正的压缩;只是一种没有大量开销的格式。

所有事情都告诉我,我可能会采用第一种方法。

答案 1 :(得分:0)

我猜你的json格式如下:

[
  {
    "name": "Frank",
    "city": "New York"
  },
  {
    "name": "Brian",
    "city": "Jerusalem"
  }
]

为什么不简单地将其更改为:

[
  ["name", "city"],
  ["Frank", "New York"],
  ["Brian", "Jerusalem"]
]

答案 2 :(得分:0)

通过XML从Flash(在客户端上运行,类似于JavaScript)和.NET(显然在服务器上运行)传输大量数据时,我遇到了类似的问题

我最终使用的方法是;

XML > string without whitespace > zip compress > base64 encoded

然后在另一边,反过来。

在你的情况下,你可以这样做;

CSV > string > zip > base64

从记忆中,我能够获得一些非常大的有效载荷(约2mb),低于50kb