有时你不必为另一个做出决定。
例如,在Go中,您可以同时使用两者:
type Person struct { Name string `json:"name" yaml:"name"` Age int `json:"age" yaml:"age"` }
我发现YAML和JSON都非常有效。当一个用于另一个对我来说真正决定的唯一两件事就是一个,这个语言最常用的是什么。例如,如果我使用Java,Javascript,我将使用JSON。对于Java,我将使用他们自己的对象,这些对象几乎是JSON但缺少某些功能,如果我需要或者首先使用JSON将其转换为JSON。我这样做是因为这在Java中是常见的,并且使其他Java开发人员更容易修改我的代码。第二件事是我是否使用它来让程序记住属性,或者程序是否以配置文件的形式接收指令,在这种情况下我将使用YAML,因为它非常容易人类阅读,很好查看语法,即使您不知道YAML的工作原理,也很容易修改。然后,程序将读取它并将其转换为JSON,或者该语言首选的任何内容。 最后,老实说无所谓。任何有经验的程序员都可以轻松阅读JSON和YAML。
JSON无法处理大数据。
不适合处理不同的多媒体格式。
JSON没有支持“评论”的功能。这可以仅作为附加属性包含在内。
YAML优于JSON,如自引用,支持复杂数据类型,嵌入块文字,注释等。
由于此问题现在在搜索YAML和JSON时占据突出地位,因此值得注意的是两者之间很少引用的区别:许可证。 JSON声称有一个 执照 哪些JSON用户必须遵守(包括法律上含糊不清的“将用于善,而不是邪恶”)。 YAML没有这样的许可声明,这可能是一个重要的区别(对你的律师,如果不是你)。
我发现YAML在眼睛上更容易:更少的括号,“”等等。尽管YAML中有标签的烦恼......但是人们可以了解它。
在性能/资源方面,我不希望两者之间存在很大差异。
此外,我们正在谈论配置文件,所以我不期望高频率的编码/解码活动,不是吗?
从技术上讲,YAML是JSON的超集。这意味着,至少在理论上,YAML解析器可以理解JSON,但不一定相反。
请参阅标题中的官方规格 “YAML:与JSON的关系” 。
一般来说,我喜欢YAML中某些JSON中没有的东西。
实际上,最后两点都不会对你或我所做的事情产生影响,但从长远来看,我认为YAML将是一种更强大和可行的数据序列化格式。
目前,AJAX和其他Web技术倾向于使用JSON。 YAML目前更多地用于离线数据处理。例如,它默认包含在基于C的OpenCV计算机视觉包中,而JSON则不包括在内。
您将找到JSON和YAML的C库。 YAML的图书馆往往更新,但我过去没有遇到任何问题。例如,参见 YAML-CPP 。