2011-03-15 39 views
4

嗯,我认为YAML真是妙不可言......有什么错YAML格式来连接到Web标准

它很漂亮,易于阅读,巧妙语法...比其他任何数据序列化格式。 作为JSON的超集,我们可以说它更精细,因此它的语言演变。

但我看到一些不同的意见在那里,例如:

  • YAML是死的,
  • 不使用YAML等等...

我根本无法了解这是什么基础,因为它看起来很好:)

如果我们几乎没有成功的例子在网络上,如Ruby on Rails,我们知道w他们使用yaml进行简单的配置,但有一件事让我好奇的是为什么yaml不是像XML和JSON这样的web最常用的格式的一部分。

如果您以Twitter为例...为什么不从API提供YAML格式的数据?

这样做有什么问题吗?

我们可以看到像couchdbmongo没有SQL数据库的演变,基于所有的JSON,甚至是一个伟大的工程称为jsondb看起来非常轻便,绝对可以胜任。

但是,当在json中编写数据结构时,我真的不明白为什么YAML没有被使用。

所以我的担心之一是如果YAML有什么问题吗?

人们可以说这是复杂的,但是好了,如果你假装使用相同的功能,你会得到JSON 它绝对不是。你会得到一个更美丽的文件,确保没有麻烦。如果你决定使用更多的功能,这确实会更复杂,但事情就是这样,至少你有可能在需要时使用它。

或可能性,如果您想不使用双引号字符串是太棒了让一切更清洁,更易于阅读....以及你所看到的是我的观点:)

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

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

我能看到的只是人们将它用于简单的配置文件而没有其他的东西......

请容忍我,因为我可能是完全错误的,非常大的项目,可能会发生的事情,我对这个课题的无知并没有让我成为它的一部分:)

如果有任何基于YAML大项目在那里我会很高兴知道它提前

感谢

+0

+ close:建议迁移到Programmers.SE。 – Juliet 2011-03-15 23:36:03

+0

Juliet,我无法理解你的_close_请求,这与其他已经回答的主题一样。 SE中的程序员网站被定义为专业程序员对软件开发专业讨论感兴趣的_Q&A,所以我不确定它 – zanona 2011-03-16 07:23:23

回答

3

这并不是说YAML有什么问题 - 它只是它在许多情况下不提供任何令人信服的好处。 YAML基本上是JSON的超集。对于大多数用途而言,JSON足够了 - 即使他们拥有完整的YAML解析器,人们也不会使用先进的YAML特性 - 而且它与JavaScript的紧密联系使得它与Web开发人员无论如何都使用的技术相适应。

TLDR:人们已经在使用尽可能多的YAML了。在大多数情况下,这是JSON。

+0

Thanks @Chuck,是的,经过了一番思考之后,似乎这确实是真正发生的事情,人们没有使用,实际上可能不需要完整的YAML API,只有JSON非常适合。与JSON相比,一个很好的YML优势是语法更清晰,但由于它们在大多数情况下仍然通过程序读取并由它们生成,所以这可能不是一个大问题,而您可以简单地编写yml,转换为json并发送给程序,反之亦然。所以我必须同意你的意见,谢谢:) – zanona 2011-03-25 09:12:46

2

在Ruby中许多人认为,配置应该是红宝石,而不是YAML。这节省了解析阶段,意味着您不必学习新的语法,并且在动态生成YAML内容(Rails设备)时不会到处都有ERB标签。

就我个人而言,我必须同意,并且看不出YAML提供给网络传输的东西,这将使其成为JSON的一个值得考虑的考虑因素。

+3

使用完整的编程语言作为配置语言是危险的 - 如果使用eval()读取它,那么有人可以轻松编写一个安全风险的配置文件。 – Paddy3118 2011-03-21 21:55:23

2

YAML使用的数据多于未经过精化的JSON。对于人们可能想要自己编辑的文件来说非常好,但是当你所做的所有事情都在传递数据时,如果你使用YAML,你会浪费带宽。

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

借此例如:

foo: 
    bar: 
     - foo 
     - bar 

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

{"foo":{"bar":["foo","bar"]}} 

然后设想一下如果您对YAML进行网址编码会发生什么。它成为95个字符:

foo%3A%0A%20%20%20%20bar%3A%0A%20%20%20%20%20%20%20%20-%20foo%0A%20%20%20%20%20%20%20%20-%20bar 

同时,JSON刚刚变为64个字符:

%7B%22foo%22%3A%7B%22bar%22%3A%5B%22foo%22%2C%22bar%22%5D%7D%7D 

大小增加YAML从JSON是两倍以上时,它的URL编码,在上面的例子。我相信你可以想象,你的YAML文件越长,这种差异越大。

哦,另一个不使用YAML的原因:stackoverflow.com不支持YAML语法高亮显示...!(当然,我认为YAML是如此美丽,它不需要语法高亮,这是一种YAML的地步,我想。)

+3

我可以写你的例子为'foo:{bar:[foo,bar]}'。 – xfix 2013-08-22 17:10:14

0

我认为使用YAML几次,从来没有。原因总是与用于缩进的空白区域有关。虽然我个人很喜欢这一点,甚至对我来说这听起来像是自找麻烦,因为

  • 对于肯定有人会犯了一个错误,没想到,改变空格将打破文件。有时候不知道语言/格式的人必须去文件中更改一个数字或字符串。
  • 您无法保证每个地方的人都会正确地配置比较/合并/ SC软件以捕捉空白区域或空行差异。