REST API的CSV,JSON和XML的相对优点是什么?

时间:2008-09-26 11:43:31

标签: xml json api rest csv

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

基本上,争论的关键在于我们是否应该支持CSV,因为缺少递归( 即具有multiple authors和{{1}的文档需要multiple references才能获得所有multiple API calls )。

在处理来自information的信息时可能遇到的经验以及我们可以采取的措施,以便让使用Web APIs的开发人员的生活更轻松。


我们的决定:

  

我们决定提供APIXML,因为JSON需要多次调用单个逻辑操作的递归有困难。 CSV JSON中没有Qt解析器,而Protocol Buffers似乎没有non-alpha PHP实现,因此它们目前也不在,但最终可能会得到支持

6 个答案:

答案 0 :(得分:23)

优点:

  • XML - 很多库,Devs熟悉它,XSLT,可以很容易地通过客户端和服务器(XSD,DTD)验证,分层数据
  • JSON - 在客户端轻松解释,紧凑表示法,分层数据
  • CSV - 在Excel中打开(?)

缺点:

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

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

答案 1 :(得分:18)

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

就个人而言,我喜欢括号。我敢打赌,使用xml数据比使用json更适合开发人员。

答案 2 :(得分:2)

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

您是否查看过Google的网络数据格式?它叫做Protocol Buffers。不知道它是否对REST服务有用,但它也会跳过整个HTTP层。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我对JSON没有任何经验,当您的数据非常表格且结构均匀时,CSV可以达到一定程度。 XML可能会很快变得难以处理,尤其是如果您没有自动创建对象绑定的工具。

我还没有尝试过,但是Google's Protocol Buffers看起来非常好,格式简单,创建了对C ++,Java和Python的自动绑定,并实现了所创建对象的序列化和反序列化。

答案 5 :(得分:0)

除了what Allain Lalonde already said之外,CSV的另一个优势是它往往比XML甚至JSON更紧凑。因此,如果您的数据严格表格,并且具有完全平坦的层次结构,则CSV可能是正确的选择。 CSV的附加缺点是它可能使用不同的分隔符和小数分隔符,这取决于哪个工具(甚至国家!)生成它。

相关问题