开发者

Is there anything wrong with YAML format to be joined to the web standards

开发者 https://www.devze.com 2023-02-17 05:35 出处:网络
Well, I think YAML is really fantastic... It\'s beautiful, easy to read, clever syntax...compared to any other data serialization format.

Well, I think YAML is really fantastic...

It's beautiful, easy to read, clever syntax...compared to any other data serialization format. As a superset of JSON we could say it's more elaborated, hence its language evolution.

But I see some different opinions out there, such:

  • YAML is dead,
  • don't use yaml and so on...

I simply can't understand on what this is based because it seems so nice :)

If we take few well succeeded examples over the web such as Ruby on Rails, we know they use yaml for simple configuration, but one thing that gets me curious is why yaml is not being part of m开发者_开发技巧ost used formats over web like XML and JSON.

If you take twitter for example...why not offer the data in YAML format from the API as well?

Is there something wrong by doing it?

We can see the evolution on no-sql databases like couchdb, mongo, all json based, even one great project called jsondb which looks very lightweight and it definitely can do the job.

But when writing data structures in json I really can't understand why YAML is not being used instead.

So one of my concerns would be if is there something wrong with YAML?

People can say it's complex, but well, if you pretend to use the same features you would get in json it's definitely not. You will get a more beautiful file for sure tho and with no hassle. It would be indeed more complex if you decide to use more features, but that's how things are, at least you have the possibility to use it if you want to.

The possibility to choose if you want or not to use double-quotes for string is fantastic makes everything cleaner and easier to read....well you see what's my point :)

So my question would be, why YAML is not vastly used in place of JSON?

Why it doesn't seem that it will be used for data structure transfers within the online community?

All I can see is people using it for simple configuration files and nothing else...

Please bear with me since I might be completely wrong and very big projects might be happening and my ignorance on the subject didn't allow me to be a part of it :)

If is there any big project based on yaml out there I would be very happy to know about it

Thanks in advance


It's not that there's something wrong with YAML — it's just that it doesn't offer any compelling benefits in many cases. YAML is basically a superset of JSON. For most purposes, JSON is quite sufficient — people wouldn't be using advanced YAML features even if they had a full YAML parser — and its close ties to JavaScript make it fit in well with the technologies that Web developers are using anyway.

TLDR: People are already using as much YAML as they need. In most cases, that's JSON.


YAML uses more data than non-prettified JSON. It's great for files that humans might want to edit themselves but when all you're doing is passing data around, you're wasting bandwidth if you're using YAML.

If you need an explanation: each space in UTF-16 is two bytes. YAML uses spaces for indentation, and newline characters for nesting.

Take this example:

foo:
    bar:
        - foo
        - bar

This requires 44 characters (including newline characters). The equivalent JSON would be only 29 characters:

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

Then just imagine what happens if you URL-encode the YAML. It becomes 95 characters:

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

Meanwhile the JSON just becomes 64 characters:

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

The size increase to YAML from JSON is more than double when it's URL-encoded, in the above example. And I'm sure you can just imagine that the longer your YAML file, the more and more this difference will increase.

Oh, and one other reason not to use YAML: stackoverflow.com does not support YAML syntax highlighting... ! (Of course, I would argue that YAML is so beautiful that it doesn't need syntax highlighting. That's kind of the point of YAML, I think.)


In Ruby many people argue that configuration should be Ruby, rather than YAML. This saves the parsing stage, means you don't have to learn the new syntax, and don't end up with ERB tags everywhere when you are dynamically generating YAML content (Rails fixtures).

Personally I have to agree, and can't see what YAML would offer to network transfers that would make it a worthwhile consideration over JSON.


YAML has an amount of problems, there is a good article YAML: probably not so great after all on that. Short summary (in addition to problems already listed in other answers):

  • Unreadable except for simple and short things
  • Insecure by default
  • Has portability issues
  • Very complex, with amount of surprising behaviors


I considered using YAML few times and never did. The reason always had to do with white spaces for indentation. While I personally love this, even to me it sounded like asking for trouble, because

  • For sure someone will make a mistake, not expecting that changing white spaces will break the file. Sometimes someone who has no idea about the language / format has to go to the file to change one number or string.
  • You can't guarantee that everybody everywhere will have it's comparison / merging / SC software configured properly to catch white space or empty lines differences.
0

精彩评论

暂无评论...
验证码 换一张
取 消