CSV、JSON 和 XML 对于 REST API 的相对优点是啥?
Posted
技术标签:
【中文标题】CSV、JSON 和 XML 对于 REST API 的相对优点是啥?【英文标题】:What are the relative merits of CSV, JSON and XML for a REST API?CSV、JSON 和 XML 对于 REST API 的相对优点是什么? 【发布时间】:2010-09-13 10:15:46 【问题描述】:我们目前正在为一个应用程序计划一个新的API
,并讨论我们应该用于交换的各种数据格式。关于CSV
、JSON
和XML
的相对优点的讨论相当激烈。
基本上,争论的关键是我们是否应该支持CSV
,因为缺少递归(即拥有一个包含multiple authors
和multiple references
的文档将需要@987654328 @获取所有information
)。
根据您在使用来自 Web APIs
的信息时可能获得的经验,以及我们可以做些什么来让使用我们的 API
的开发人员的生活更轻松。
我们的决定:
我们决定提供
XML
和JSON
,因为CSV
的递归难度需要多次调用以实现单个逻辑操作。JSON
在Qt
中没有解析器,而Protocol Buffers
似乎没有non-alpha php
实现,所以它们暂时也已退出,但最终可能会得到支持。
【问题讨论】:
CSV 的美妙之处在于它的简单性。 CSV 对于严格的表格数据更简单、更高效。试图将其他东西(如本例)硬塞进 CSV 是一场灾难。 【参考方案1】:优点:
XML - 很多库,开发人员熟悉它,XSLT,可以很容易地被客户端和服务器(XSD,DTD)验证,分层数据 JSON - 易于在客户端解释、紧凑表示法、分层数据 CSV - 在 Excel 中打开 (?)缺点:
XML - 臃肿,在 javascript 中比 JSON 更难解释 JSON - 如果使用不当会造成安全漏洞(不要使用 eval),并非所有语言都有库来解释它。 CSV - 不支持分层数据,您将是唯一一个这样做的人,实际上解析有效的 csv 文件比大多数开发人员认为的要困难得多(CSV 值可以包含新行,只要它们在引号之间,等等)。鉴于上述情况,我什至不会费心支持 CSV。如果确实需要,客户端可以从 XML 或 JSON 生成它。
【讨论】:
除非您选择的语言中有 JSON 解析器,否则 CSV 比 JSON 更容易解析。 有适用于各种语言的 JSON 解析器。见底部json.org。【参考方案2】:CSV 是正确的。 JSON 是一种比 XML 更紧凑的对象表示法,因此如果您正在寻找大量数据,它具有优势。 XML 具有更广泛的市场渗透率(我喜欢这个短语),并且受到所有编程语言及其核心框架的支持。 JSON 正在到达那里(如果还没有的话)。
就个人而言,我喜欢括号。我敢打赌,与使用 json 相比,更多的开发人员更愿意使用 xml 数据。
【讨论】:
【参考方案3】:XML 有时可能有点重量级。 JSON 相当不错,但它具有良好的语言支持,并且 JSON 数据可以直接转换为许多游戏形式上的原生对象。
【讨论】:
【参考方案4】:CSV 作为一个复杂的数据模型有很多问题,我不会使用它。 XML 非常灵活且易于编程 - 客户端编写 XML 生成器和解析器不会有任何问题,您甚至可以使用 SAX 提供示例解析器。
您检查过 Google 的网络数据格式吗?它被称为协议缓冲区。不知道它是否对 REST 服务有用,因为它也跳过了整个 HTTP 层。
【讨论】:
【参考方案5】:我对 JSON 没有任何经验,当您的数据非常表格且结构均匀时,CSV 可以工作。 XML 很快就会变得笨拙,特别是如果您没有自动创建对象绑定的工具。
我也没有尝试过,但Google's Protocol Buffers 看起来非常好,简单的格式,创建与 C++、Java 和 Python 的自动绑定,并实现所创建对象的序列化和反序列化。
【讨论】:
【参考方案6】:除了what Allain Lalonde already said,CSV 的另一个优点是它往往比 XML 甚至 JSON 更紧凑。因此,如果您的数据是严格表格的,具有完全平坦的层次结构,那么 CSV 可能是一个正确的选择。 CSV 的其他缺点是它可能使用不同的定界符和小数分隔符,这取决于生成它的工具(甚至国家!)。
【讨论】:
以上是关于CSV、JSON 和 XML 对于 REST API 的相对优点是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Java Rest Jersey:发布多种类型的数据(文件和JSON)
Spring 4 mvc REST XML 和 JSON 响应
使用python将Rest Api json结果转换为csv