我们目前正在为应用程序规划一个新的API
,并讨论我们应该用于交换的各种数据格式。对CSV
,JSON
和XML
的相对优点进行了相当激烈的讨论。
基本上,争论的关键在于我们是否应该支持CSV
,因为缺少递归( 即具有multiple authors
和{{1}的文档需要multiple references
才能获得所有multiple API calls
)。
在处理来自information
的信息时可能遇到的经验以及我们可以采取的措施,以便让使用Web APIs
的开发人员的生活更轻松。
我们的决定:
我们决定提供
API
和XML
,因为JSON
需要多次调用单个逻辑操作的递归有困难。CSV
JSON
中没有Qt
解析器,而Protocol Buffers
似乎没有non-alpha PHP
实现,因此它们目前也不在,但最终可能会得到支持
答案 0 :(得分:23)
优点:
缺点:
鉴于上述情况,我甚至不打扰支持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的附加缺点是它可能使用不同的分隔符和小数分隔符,这取决于哪个工具(甚至国家!)生成它。