YAML和JSON有什么区别?

YAML和JSON有什么区别,特别考虑如下几点? html

  • 性能(编码/解码时间)
  • 内存消耗
  • 表情清晰
  • 图书馆的可用性,易用性(我更喜欢C)

我打算在嵌入式系统中使用这两个之一来存储配置文件。 程序员

有关:

我应该使用YAML仍是JSON存储个人Perl数据? 数据库


#1楼

差别: 编程

  1. 根据您的使用方式,YAML比JSON更具可读性
  2. JSON一般更快 ,而且可能仍可与更多系统互操做
  3. 能够很是快速地编写一个“足够好”的JSON解析器
  4. 重复键,这是潜在的有效的JSON, 确定是无效的YAML。
  5. YAML具备大量功能,包括注释和关系锚。 所以,YAML语法很是复杂,而且可能难以理解。
  6. 能够在yaml中编写递归结构: {a: &b [*b]} ,它将在某些转换器中无限循环。 即便进行循环检测,“ yaml炸弹”仍然是可能的(请参阅xml bomb )。
  7. 由于没有引用,因此没法使用JSON中的对象引用序列化复杂的结构。 所以,YAML序列化能够更有效。
  8. 在某些编码环境中,使用YAML可使攻击者执行任意代码

观察结果: 网络

  1. Python程序员一般是YAML的忠实拥护者,由于使用缩进(而不是方括号)来指示级别。
  2. 许多程序员认为将“含义”附加到缩进上是一个糟糕的选择。
  3. 若是数据格式将离开应用程序的环境,在UI中进行解析或在消息传递层中发送,则JSON多是更好的选择。
  4. YAML能够直接用于诸如语法定义之类的复杂任务,而且比发明新语言一般是更好的选择。

#2楼

我发现YAML看起来更容易:圆括号,“”等更少。尽管YAML中的制表符很烦人,但其中的一环却无处可去。 编辑器

在性能/资源方面,我不但愿二者之间有很大的差别。 性能

此外,咱们正在谈论配置文件,所以我不但愿出现频繁的编码/解码活动,不是吗? google


#3楼

若是您不须要YAML所具备的任何功能而JSON却没有,那么我将更喜欢JSON,由于它很是简单而且受到普遍支持(具备许多语言的库)。 YAML更复杂且支持较少。 我认为解析速度或内存使用不会有太大差别,而且可能不会对程序性能产生很大影响。 编码


#4楼

从技术上讲,YAML是JSON的超集。 这意味着,至少从理论上讲,YAML解析器能够理解JSON,但不必定能够理解。 spa

请参阅标题为“ 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


#5楼

绕开深奥的理论

这回答了标题,而不是细节,由于大多数人只是从像我这样的Google搜索结果中读取标题,因此我以为有必要从网络开发人员的角度进行解释。

  1. YAML使用空格缩进,这是Python开发人员熟悉的领域。
  2. JavaScript开发人员喜欢JSON,由于它是JavaScript的子集,而且能够在JavaScript内部直接解释和编写,还可使用简写方式声明JSON,在使用不带空格的典型变量名时,键中不须要双引号。
  3. 对于YAML和JSON,有不少解析器在全部语言中均可以很好地工做。
  4. 在许多状况下,YAML的空白格式可能更容易查看,由于格式须要更易于理解的方法。
  5. 若是您在编辑器中没有可见的空格或缩进线指示符,则YAML的空格虽然更紧凑且更易于查看,但看起来很难手动编辑。
  6. 与要检查的YAML相比,JSON的功能要少得多,所以JSON的序列化和反序列化速度要快得多,这使得更小更轻的代码能够处理JSON。
  7. 一个常见的误解是,YAML比JSON须要更少的标点而且更紧凑,但这彻底是错误的。 空格是不可见的,所以彷佛字符较少,可是若是您计算实际的空格,以便正确解释YAML和正确的缩进,必须存在该空格,您会发现YAML实际上比JSON须要更多的字符。 JSON不使用空格来表示层次结构或分组,而且能够很容易地进行平整,并删除了没必要要的空格以进行更紧凑的传输。

房间里的大象:互联网自己

JavaScript如此明显地在网络上占据了主导地位,而且JavaScript开发人员更倾向于将JSON做为数据格式与流行的Web API一块儿使用,所以在通常意义上进行Web编程时,很难争辩使用YAML而不是JSON,由于您可能会过度同意在团队环境中。 实际上,大多数Web程序员甚至都不知道YAML的存在,更不用说考虑使用它了。

若是您正在执行任何Web编程,则JSON是默认的处理方式,由于使用JavaScript时不须要任何翻译步骤,所以在这种状况下,您必须提出一个更好的参数以在JSON上使用YAML。

相关文章
相关标签/搜索