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

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

考虑到以下因素,我们何时应该优先使用YAML而不是JSON,反之亦然?

  • 性能(编码/解码时间)

  • 内存消耗

  • 表达清晰度

  • 库可用性,易用性(我更喜欢C)

我计划在嵌入式系统中使用这两个中的一个来存储配置文件。


翻阅古今
浏览 5121回答 3
3回答

慕森卡

从技术上讲,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。

幕布斯6054654

绕过深奥的理论这回答了标题,而不是详细信息,因为大多数人只是像谷歌一样从google搜索结果中读取标题,所以我觉得有必要从Web开发人员的角度进行解释。YAML使用空格缩进,这是Python开发人员熟悉的领域。JavaScript开发人员喜欢JSON,因为它是JavaScript的一个子集,可以直接在JavaScript中解释和编写,同时使用简写方式声明JSON,在使用没有空格的典型变量名时,不需要键中的双引号。有很多解析器在YAML和JSON的所有语言中都能很好地工作。在许多情况下,YAML的空白格式可以更容易查看,因为格式化需要更人性化的方法。如果您的编辑器中没有空格可见或缩进线指示符,那么YAML的空白虽然更紧凑,更容易查看,但可能难以手动编辑。JSON的序列化和反序列化要快得多,因为要检查的功能明显少于YAML,这使得更小更轻的代码能够处理JSON。一个常见的误解是YAML需要较少的标点符号并且比JSON更紧凑,但这完全是错误的。空格是不可见的,所以看起来字符较少,但是如果你计算实际的空格是必要的,以便正确解释YAML以及正确的缩进,你会发现YAML实际上需要比JSON更多的字符。JSON不使用空格来表示层次结构或分组,并且可以通过删除不必要的空格来轻松展平,以实现更紧凑的传输。房间里的大象:互联网本身JavaScript如此明显地占据了网络的巨大优势,而JavaScript开发人员更喜欢将JSON作为数据格式与流行的Web API一起使用,因此在进行一般意义上的Web编程时,很难使用YAML而不是JSON,因为您可能会被淘汰在团队环境中。实际上,大多数Web程序员甚至都不知道YAML存在,更不用说考虑使用它了。如果您正在进行任何Web编程,JSON是默认的方法,因为在使用JavaScript时不需要转换步骤,因此在这种情况下您必须提出更好的参数来使用YAML而不是JSON。
打开App,查看更多内容
随时随地看视频慕课网APP