为了账号安全,请及时绑定邮箱和手机立即绑定

YAML和JSON有什么区别?什么时候比较喜欢一个

YAML和JSON有什么区别?什么时候比较喜欢一个

YAML和JSON有什么区别?什么时候比较喜欢一个考虑到以下因素,我们何时应该优先使用YAML而不是JSON,反之亦然?性能(编码/解码时间)内存消耗表达清晰度库可用性,易用性(我更喜欢C)我计划在嵌入式系统中使用这两个中的一个来存储配置文件。
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

从技术上讲,YAML是JSON的超集。这意味着,至少在理论上,YAML解析器可以理解JSON,但不一定相反。

请参阅标题为“YAML:与JSON的关系”的部分中的官方规范。

一般来说,我喜欢YAML中某些JSON中没有的东西。

  • 正如@jdupont指出的那样,YAML在视觉上更容易看。事实上,YAML主页本身就是有效的YAML,但人们很容易阅读。

  • YAML能够使用“锚点”引用YAML文件中的其他项目。因此,它可以处理MySQL数据库中可能找到的关系信息。

  • YAML  YAML文件中嵌入其他序列化格式(如JSON或XML)更为强大。

实际上,最后两点都不会对你或我所做的事情产生影响,但从长远来看,我认为YAML将是一种更强大和可行的数据序列化格式。

目前,AJAX和其他Web技术倾向于使用JSON。YAML目前更多地用于离线数据处理。例如,它默认包含在基于C的OpenCV计算机视觉包中,而JSON则不包括在内。

您将找到JSON和YAML的C库。YAML的图书馆往往更新,但我过去没有遇到任何问题。参见例如Yaml-cpp


查看完整回答
反对 回复 2019-08-23
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

绕过深奥的理论

这回答了标题,而不是详细信息,因为大多数人只是像谷歌一样从google搜索结果中读取标题,所以我觉得有必要从Web开发人员的角度进行解释。

  1. YAML使用空格缩进,这是Python开发人员熟悉的领域。

  2. JavaScript开发人员喜欢JSON,因为它是JavaScript的一个子集,可以直接在JavaScript中解释和编写,同时使用简写方式声明JSON,在使用没有空格的典型变量名时,不需要键中的双引号。

  3. 有很多解析器在YAML和JSON的所有语言中都能很好地工作。

  4. 在许多情况下,YAML的空白格式可以更容易查看,因为格式化需要更人性化的方法。

  5. 如果您的编辑器中没有空格可见或缩进线指示符,那么YAML的空白虽然更紧凑,更容易查看,但可能难以手动编辑。

  6. JSON的序列化和反序列化要快得多,因为要检查的功能明显少于YAML,这使得更小更轻的代码能够处理JSON。

  7. 一个常见的误解是YAML需要较少的标点符号并且比JSON更紧凑,但这完全是错误的。空格是不可见的,所以看起来字符较少,但是如果你计算实际的空格是必要的,以便正确解释YAML以及正确的缩进,你会发现YAML实际上需要比JSON更多的字符。JSON不使用空格来表示层次结构或分组,并且可以通过删除不必要的空格来轻松展平,以实现更紧凑的传输。

房间里的大象:互联网本身

JavaScript如此明显地占据了网络的巨大优势,而JavaScript开发人员更喜欢将JSON作为数据格式与流行的Web API一起使用,因此在进行一般意义上的Web编程时,很难使用YAML而不是JSON,因为您可能会被淘汰在团队环境中。实际上,大多数Web程序员甚至都不知道YAML存在,更不用说考虑使用它了。

如果您正在进行任何Web编程,JSON是默认的方法,因为在使用JavaScript时不需要转换步骤,因此在这种情况下您必须提出更好的参数来使用YAML而不是JSON。


查看完整回答
反对 回复 2019-08-23
  • 3 回答
  • 0 关注
  • 4867 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信