我们什么时候应该使用YAML而不是JSON,反之亦然,考虑以下几点?
我打算在我们的嵌入式系统中使用这两个中的一个来存储配置文件。
有关:
我应该使用YAML还是JSON来存储我的Perl数据?
发布于 2017-12-19 11:30:14
技术上,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。
发布于 2017-12-19 11:30:42
区别:
YAML,取决于你如何使用它,可以比JSON更具可读性
JSON通常速度更快,可能仍然可以与更多系统互操作
可以非常快速地编写一个“足够好”的JSON解析器
重复键,这是潜在的有效的JSON,是绝对无效YAML。
YAML有很多功能,包括评论和关系锚。YAML语法因此相当复杂,而且可能很难理解。
在yaml中写递归结构是可能的{a: &b [*b]},它将在一些转换器中无限循环。即使是循环检测,“yaml炸弹”仍然是可能的(见xml炸弹)。
由于没有引用,因此不可能使用JSON序列化带有对象引用的复杂结构。YAML序列化因此可以更有效率。
结论:
Python程序员通常是YAML的忠实粉丝,因为使用了缩进而不是括号内的语法来表示级别。
许多程序员认为“含义”对缩进的依附是一个糟糕的选择。
如果数据格式将离开应用程序的环境,在UI中解析,或在消息传递层发送,JSON可能是更好的选择。
YAML可以直接用于复杂的任务,如语法定义,通常是比创建新语言更好的选择。
发布于 2021-12-23 15:32:14
我将 YAML 看作是 JSON 的升级,尤其在工程化中应用非常广泛。且 YAML 会是将来前端-后端-运维的标准配置。 具体可以看这篇文章:https://juejin.cn/post/7040849488998563848
https://stackoverflow.com/questions/-100007084
复制相似问题