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。
TA贡献1876条经验 获得超7个赞
绕过深奥的理论
这回答了标题,而不是详细信息,因为大多数人只是像谷歌一样从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。
添加回答
举报