目前,我们正在规划一个新的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客户端和服务器(XSD,DTD),分层数据进行了验证
- JSON - 在客户端容易理解的,紧凑的符号,分层数据
- CSV - 打开在Excel(?)
缺点:
- XML - 臃肿,更难在JavaScript比JSON解析
- JSON - 如果使用不当,可能会带来安全漏洞(不使用eval),并非所有的语言都库解释。
- CSV - 不支持分层数据,你是唯一一个这样做,它比大多数开发者认为解析有效的CSV文件(CSV值可以包含新的生产线,只要它们在引号之间等)实际上更难。
鉴于上述情况,我也不会甚至懒得支持CSV。 如果它真正需要的客户可以从XML或JSON生成它。
CSV有这么多的问题,我不会用复杂的数据模型。 XML是非常灵活,易于编程与 - 客户不会有任何问题编码XML生成器和分析器,你甚至可以使用SAX提供样本分析器。
你检查了谷歌的网络对数据格式? 这就是所谓的协议缓冲区。 不知道这是否是一个不过REST服务有用,因为它跳过整个HTTP层了。
XML可以在次位重量级。 JSON是相当不错的,不过,有良好的语言支持,JSON数据可以直接转换为本地对象很多playforms。
我没有与任何JSON经验,CSV作品在一定程度上,当你的数据是非常表格和均匀的结构。 XML可以成为笨拙非常快,特别是如果你没有这样的自动创建绑定到你的目标的工具。
我也没有试过,但谷歌的协议缓冲器看起来真的很不错,简单的格式,创建自动绑定到C ++,Java和Python,并实现创建的对象的序列化和deserialisation。
从旁白什么阿兰拉隆德已经说过 ,CSV的一个额外好处是,它往往比XML或JSON甚至更紧凑。 所以,如果你的数据是严格的表格,具有完全平坦hyerarchy,CSV可能是一个正确的选择。 CSV的产生额外的缺点是,它可能会使用不同的分隔符和小数点分隔符,depeding上生成工具(甚至国家!)它。