对于RESTAPI,CSV、JSON和XML的相对优点是什么?

对于RESTAPI,CSV、JSON和XML的相对优点是什么?,xml,json,api,rest,csv,Xml,Json,Api,Rest,Csv,我们目前正在为一个应用程序规划一个新的API,并就我们应该使用的各种数据格式进行讨论。关于CSV、JSON和XML的相对优点,人们正在进行相当激烈的讨论 基本上,争论的关键是我们是否应该支持CSV,因为缺少递归(,即拥有一个多个作者和多个引用的文档将需要多个API调用来获取所有信息) 在使用webapi中的信息时,您可能有过这样的经历,我们可以做一些事情,使使用API的开发人员的生活更加轻松 我们的决定: 我们决定提供XML和JSON,因为在CSV中递归很困难,需要对单个逻辑操作进行多次调用J

我们目前正在为一个应用程序规划一个新的
API
,并就我们应该使用的各种数据格式进行讨论。关于
CSV
JSON
XML
的相对优点,人们正在进行相当激烈的讨论

基本上,争论的关键是我们是否应该支持
CSV
,因为缺少递归(,即拥有一个
多个作者
多个引用
的文档将需要
多个API调用
来获取所有
信息

在使用
webapi
中的信息时,您可能有过这样的经历,我们可以做一些事情,使使用
API
的开发人员的生活更加轻松


我们的决定:

我们决定提供
XML
JSON
,因为在
CSV
中递归很困难,需要对单个逻辑操作进行多次调用
JSON
Qt
中没有解析器,
Protocol Buffers
似乎没有
非alpha PHP
实现,因此它们暂时也不存在,但最终可能会得到支持


CSV是正确的。JSON是一种比XML更紧凑的对象表示法,因此,如果您要寻找高容量,它具有优势。XML具有更广泛的市场渗透性(我喜欢这个短语),并且受到所有编程语言及其核心框架的支持。JSON正在实现(如果还没有实现的话)


就我个人而言,我喜欢括号。我敢打赌,与json相比,更多的开发人员更愿意使用xml数据

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


你查过谷歌的网络数据格式吗?这叫做协议缓冲区。我不知道它对REST服务是否有用,因为它也跳过了整个HTTP层。

XML有时可能有点重。不过,JSON非常好,具有良好的语言支持,JSON数据可以直接转换为许多playforms上的本机对象。

优点:

  • XML—很多库,开发人员都很熟悉,XSLT,可以很容易地由客户机和服务器(XSD、DTD)以及分层数据进行验证
  • JSON-易于在客户端解释,紧凑的表示法,分层数据
  • CSV-在Excel中打开(?)
缺点:

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

鉴于上述情况,我甚至不想费心支持CSV。如果真的需要,客户端可以从XML或JSON生成它。

我对JSON没有任何经验,CSV在某种程度上可以工作,因为您的数据是非常表格化且结构均匀的。XML可能会很快变得笨拙,尤其是如果您没有自动创建对象绑定的工具的话


我也没有尝试过,但是看起来很好,简单的格式,创建了C++、java和python的自动绑定,实现了创建对象的序列化和反序列化。因此,如果您的数据是严格的表格格式,并且具有完全平坦的hyerarchy,那么CSV可能是一个正确的选择。CSV的另一个缺点是,它可能会使用不同的分隔符和小数分隔符,这取决于生成它的工具(甚至是国家!)。

除非您选择的语言中有JSON解析器,否则CSV比JSON更容易解析。JSON解析器可用于非常广泛的语言。请参阅的底部。CSV的优点在于它的简单性。CSV对于严格的表格数据来说更简单、更高效。试图将其他东西(如本例)塞进CSV是一场灾难。