有哪些相对优缺点CSV,JSON和XML休息API?
题
我们目前正在规划一个新的 API
对于一个应用程序和辩论的各种数据格式,我们应该使用为交换。还有一个相当强烈的讨论会有关的相对优点的 CSV
, JSON
和 XML
.
基本上,问题的关键参数是,我们是否应该支持 CSV
在所有的因为缺乏递归(即有一份文件而已 multiple authors
和 multiple references
将要求 multiple API calls
得到所有 information
).
在经历,你可能有时工作的信息 Web APIs
和我们可以做的事情来让生活更容易的开发工作与我们的 API
.
我们决定:
我们已经决定提供
XML
和JSON
由于难以在递归CSV
需要多个呼吁的单个逻辑操作。JSON
没有一个分析器Qt
和Protocol Buffers
似乎没有一个non-alpha PHP
执行,使他们出的那一刻但也可能会支持最终。
解决方案
CSV马上就出来了。 JSON是比XML更紧凑的对象表示法,因此如果您正在寻找高容量,它具有优势。 XML具有更广泛的市场渗透率(我喜欢这个短语)并且得到所有编程语言及其核心框架的支持。 JSON即将到达(如果还没有)。
就个人而言,我喜欢括号。我敢打赌,使用xml数据比使用json更适合开发人员。
其他提示
优点:
- XML的许多图书馆、开发人员都熟悉它,XSLT,可以easiily验证了由客户和服务器(文件,DTD),分级数据
- 书很容易地解释上的客户方面,紧凑型的符号,分级数据
- CSV-打开在Excel(?)
缺点:
- XML的臃肿,难以解释在JavaScript于JSON
- 星如果使用不当可能会造成安全漏洞(不使用eval),并不是所有语言都有图书馆解释。
- CSV-不支持数据层级的,你是唯一一个这样做的,它实际上是很难比大多数开发者认为,分析有效csv文件(CSV值可以包含新的生产线,只要作为它们之间的报价等)。
鉴于上述,我甚至不会打扰支持CSV。客户可以产生它从XML函如果这是真正需要的。
CSV作为一个复杂的数据模型存在很多问题,我不会使用它。 XML非常灵活且易于编程 - 客户端编写XML生成器和解析器没有问题,您甚至可以使用SAX提供示例解析器。
您是否查看过Google的网络数据格式?它叫做Protocol Buffers。不知道它是否对REST服务有用,但它也会跳过整个HTTP层。
XML有时可能有点重量级。 JSON非常好,但是它具有良好的语言支持,并且JSON数据可以直接转换为许多游戏形式的本机对象。
我对JSON没有任何经验,当您的数据非常表格且结构均匀时,CSV可以达到一定程度。 XML可能会很快变得难以处理,尤其是如果您没有自动创建对象绑定的工具。
我还没试过,但 Google的协议缓冲区看起来非常好,格式简单,创建自动绑定到C ++,Java和Python,并实现创建对象的序列化和反序列化。
除了 Allain Lalonde已经说过的内容之外,CSV的另一个优势是它比XML更紧凑甚至是JSON。因此,如果您的数据严格表格,并且具有完全平坦的层次结构,则CSV可能是正确的选择。 CSV的附加缺点是它可能使用不同的分隔符和小数分隔符,这取决于哪个工具(甚至国家!)生成它。