Json 加入web标准的YAML格式有什么问题吗

Json 加入web标准的YAML格式有什么问题吗,json,data-structures,format,standards,yaml,Json,Data Structures,Format,Standards,Yaml,嗯,我觉得亚马尔真的很棒 与任何其他数据序列化格式相比,它美观、易于阅读、语法巧妙。 作为JSON的超集,我们可以说它更精细,因此它的语言也在不断演变 但我看到了一些不同的观点,比如: 亚姆死了 不要使用yaml等等 我简直无法理解这是基于什么,因为它看起来太好了:) 如果我们举几个在web上成功的例子,如RubyonRails,我们知道他们使用yaml进行简单的配置,但有一件事让我好奇的是,为什么yaml不是web上最常用的格式(如XML和JSON)的一部分 如果以twitter为例,为什

嗯,我觉得亚马尔真的很棒

与任何其他数据序列化格式相比,它美观、易于阅读、语法巧妙。 作为
JSON
的超集,我们可以说它更精细,因此它的语言也在不断演变

但我看到了一些不同的观点,比如:

  • 亚姆死了
  • 不要使用yaml等等
我简直无法理解这是基于什么,因为它看起来太好了:)

如果我们举几个在web上成功的例子,如RubyonRails,我们知道他们使用yaml进行简单的配置,但有一件事让我好奇的是,为什么yaml不是web上最常用的格式(如XML和JSON)的一部分

如果以twitter为例,为什么不从API提供YAML格式的数据呢

这样做有什么不对吗?

我们可以看到在没有sql数据库的情况下的演变,比如,所有基于json的数据库,甚至一个名为的伟大项目,它看起来非常轻量级,并且肯定可以完成这项工作

但在用json编写数据结构时,我真的不明白为什么不使用YAML

所以我的一个担忧是YAML是否有问题

人们可以说这很复杂,但是如果你假装使用json中的相同功能,那肯定不是。你肯定会得到一个更漂亮的文件,而且不会有任何麻烦。如果你决定使用更多的功能,它确实会更复杂,但事情就是这样,如果你想使用的话,至少你有可能使用它

选择是否要为字符串使用双引号的可能性非常好,这使得所有内容更清晰、更易于阅读……您明白我的观点了:)

所以我的问题是,为什么YAML没有被广泛地用来代替JSON

为什么它似乎不会用于在线社区内的数据结构传输

我所能看到的只是人们用它来制作简单的配置文件,而不是别的

请容忍我,因为我可能完全错了,可能会发生非常大的项目,而我对这个问题的无知使我无法参与其中:)

如果有任何基于yaml的大项目在那里,我会非常高兴地知道它


提前感谢

在Ruby中,许多人认为配置应该是Ruby,而不是YAML。这节省了解析阶段,意味着您不必学习新语法,并且在动态生成YAML内容(Rails装置)时,也不必到处都使用ERB标记


就我个人而言,我不得不同意,而且我看不出YAML将为网络传输提供什么,这将使它成为值得考虑的JSON。

这并不是YAML有什么问题,只是在许多情况下它没有提供任何引人注目的好处。YAML基本上是JSON的超集。在大多数情况下,JSON已经足够了——即使有完整的YAML解析器,人们也不会使用高级YAML功能——而且JSON与JavaScript的紧密联系使其与Web开发人员正在使用的技术非常契合


TLDR:人们已经在使用他们所需要的YAML了。在大多数情况下,这就是JSON。

YAML比未修饰的JSON使用更多的数据。对于人类可能希望自己编辑的文件来说,这很好,但当您所做的只是传递数据时,如果您使用YAML,则会浪费带宽

如果您需要解释:UTF-16中的每个空格是两个字节。YAML使用空格进行缩进,使用换行符进行嵌套

举个例子:

foo:
    bar:
        - foo
        - bar
这需要44个字符(包括换行符)。等效的JSON只有29个字符:

{"foo":{"bar":["foo","bar"]}}
%7B%22foo%22%3A%7B%22bar%22%3A%5B%22foo%22%2C%22bar%22%5D%7D%7D
然后想象一下,如果对YAML进行URL编码会发生什么。它变为95个字符:

{"foo":{"bar":["foo","bar"]}}
%7B%22foo%22%3A%7B%22bar%22%3A%5B%22foo%22%2C%22bar%22%5D%7D%7D
foo%3A%0A%20%20%20%20bar%3A%0A%20%20%20%20%20%20%20%20%20-%20foo%0A%20%20%20%20%20%20-%20bar
同时,JSON只会变成64个字符:

{"foo":{"bar":["foo","bar"]}}
%7B%22foo%22%3A%7B%22bar%22%3A%5B%22foo%22%2C%22bar%22%5D%7D%7D
在上面的示例中,当使用URL编码时,从JSON到YAML的大小增加了一倍多。我相信您可以想象,YAML文件越长,这种差异就会越来越大


哦,还有一个不使用YAML的原因:stackoverflow.com不支持YAML语法高亮显示(当然,我会说YAML非常漂亮,它不需要语法突出显示。我想这就是YAML的要点。)

我考虑过使用YAML几次,但从未考虑过。原因总是与缩进的空格有关。虽然我个人很喜欢这个,但即使对我来说,这听起来也像是自找麻烦,因为

  • 当然有人会犯错误,不希望更改空格会破坏文件。有时,不知道语言/格式的人必须到文件中更改一个数字或字符串
  • 你不能保证任何地方的每个人都能正确配置比较/合并/SC软件来捕捉空白或空行差异

    • YAML有很多问题,有一篇好文章 在那上面。 简短总结(除其他答案中已列出的问题外):

      • 除了简单和简短的东西之外,其他东西都不可读
      • 默认不安全
      • 存在可移植性问题
      • 非常复杂,有大量令人惊讶的行为

      +close:建议迁移到Programmers.SE.Juliet,我无法理解您的close请求,这与已回答的其他主题一样多。SE中的程序员网站被定义为对软件开发的专业讨论感兴趣的专家程序员的问答,所以我不确定使用完整的编程语言作为配置是危险的