24

我们目前正在API为一个应用程序计划一个新的,并讨论我们应该用于交换的各种数据格式。关于 和 的相对优点正在进行相当激烈的CSV讨论。JSONXML

基本上,争论的关键是我们是否应该支持CSV,因为缺乏递归(即拥有一个拥有multiple authors并且multiple references需要multiple API calls获取所有的information文档)。

根据您在处理Web APIs来自API.


我们的决定:

由于递归的困难,XML我们决定提供单个逻辑操作需要多次调用。没有解析器,似乎也没有实现,所以它们暂时也没有,但最终可能会得到支持。JSONCSVJSONQtProtocol Buffersnon-alpha PHP

4

6 回答 6

24

好处:

  • XML - 很多库,开发人员熟悉它,XSLT,可以很容易地被客户端和服务器(XSD,DTD)验证,分层数据
  • JSON - 易于在客户端解释,紧凑符号,分层数据
  • CSV - 在 Excel 中打开(?)

缺点:

  • XML - 臃肿,在 JavaScript 中比 JSON 更难解释
  • JSON - 如果使用不当会造成安全漏洞(不要使用 eval),并非所有语言都有库来解释它。
  • CSV - 不支持分层数据,您将是唯一一个这样做的人,实际上解析有效的 csv 文件比大多数开发人员认为的要困难得多(CSV 值可以包含新行,只要它们在引号之间等)。

鉴于上述情况,我什至不会费心支持 CSV。如果确实需要,客户端可以从 XML 或 JSON 生成它。

于 2008-09-26T11:55:07.250 回答
19

CSV 就出来了。JSON 是一种比 XML 更紧凑的对象表示法,因此如果您正在寻找高容量,它具有优势。XML 具有更广泛的市场渗透(我喜欢这句话),并且得到所有编程语言及其核心框架的支持。JSON 正在到达那里(如果还没有的话)。

就个人而言,我喜欢括号。我敢打赌,与使用 json 相比,更多的开发人员更愿意使用 xml 数据。

于 2008-09-26T11:47:05.023 回答
3

XML 有时可能有点重量级。JSON 非常好,但它具有良好的语言支持,并且 JSON 数据可以直接转换为许多游戏形式上的原生对象。

于 2008-09-26T11:48:06.987 回答
2

CSV 作为一个复杂的数据模型有很多问题,我不会使用它。XML 非常灵活且易于编程 - 客户端对 XML 生成器和解析器进行编码没有问题,您甚至可以使用 SAX 提供示例解析器。

你检查过谷歌的网络数据格式吗?它被称为协议缓冲区。不知道它是否对 REST 服务有用,因为它也跳过了整个 HTTP 层。

于 2008-09-26T11:47:32.197 回答
1

我对 JSON 没有任何经验,当您的数据非常表格且结构均匀时,CSV 可以工作。XML 很快就会变得笨拙,特别是如果您没有自动创建对象绑定的工具。

我也没有尝试过,但Google 的协议缓冲区看起来非常好,格式简单,创建与 C++、Java 和 Python 的自动绑定,并实现创建对象的序列化和反序列化。

于 2008-09-26T12:24:53.997 回答
0

除了 Alllain Lalonde 已经说过的,CSV 的另一个优点是它往往比 XML 甚至 JSON 更紧凑。因此,如果您的数据是严格的表格,具有完全平坦的层次结构,那么 CSV 可能是一个正确的选择。CSV 的其他缺点是它可能使用不同的定界符和小数分隔符,这取决于生成它的工具(甚至国家!)。

于 2017-08-09T13:54:46.217 回答