Why not just write your yaml files in JSON syntax?
JSON is a valid subset of YAML
I wish we would all start switching over to JSON for configuration files. It’s so much easier to parse, and you can’t screw it up with too many spaces or not enough.
Why not just write your yaml files in JSON syntax?
JSON is a valid subset of YAML
I used to think that until I figured out yaml and now yaml isn’t so bad.
It helps that text editors know what yaml is now so insert spaces when you hit tab etc
My biggest gripe with yaml (especially in docker-compose files) is that l, for me at least, it is absolutely not clear when I need to add dahes (-) in front of multiple entries and when it’s just linebreaks.
And there are no easy accessible docker-compose validators…
Try the yaml language server by red hat, it comes with a docker compose validator.
But in general, off the top of my head, dashes = list. No dashes is a dictionary.
So this is a list:
thing: - 1 - 2
And this is a dictionary:
dict: key1: value1 key2: value2
And then when they can be combined into a list of dictionaries.
listofdicts: - key1dict1: value1dict1 - key1dict2: value1dict2 key2dict2: value2dict2
And then abother thing to note is that yaml wilL convert things into a string. So if you have ports 8080:80
, this will be converted into a string, which is a clue that this is a string in a list, rather than a dictionary.
Try the yaml language server by red hat, it comes with a docker compose validator.
But in general, off the top of my head, dashes = list. No dashes is a dictionary.
So this is a list:
thing: - 1 - 2
And this is a dictionary:
dict: key1: value1 key2: value2
And then when they can be combined into a list of dictionaries.
listofdicts: - key1dict1: value1dict1 - key1dict2: value1dict2 key2dict2: value2dict2
And then abother thing to note is that yaml wilL convert things into a string. So if you have ports 8080:80
, this will be converted into a string, which is a clue that this is a string in a list, rather than a dictionary.
No support for comments? Hard pass
Yeah, this is my biggest annoyance with JSON. As a data structure it’s very elegant, but it only really makes sense to people who know how to code, and without the ability to add comments you have to rely heavily on external documentation to make it readable to most users.
And like yeah, both the wonderful (and foss!) .json5
and Microsoft’s semi-proprietary(?) .jsonc
exist, but most projects just use their language’s default JSON parser that doesn’t recognize them. What I would personally love to see is .json5
support baked into the default JSON parsing libraries of Python, Go, etc. (Enabled by a flag, likely.) It’s a superset of regular JSON and fully ES2019 compatible, so there shouldn’t be any issues.
Instead you can screw it up by having too many commas or not enough. Hardly that much of an improvement.
It’s IMO also so much clearer regarding data types. You can’t accidentally write a boolean when you want a string.
timbuck2themoon@sh.itjust.works 16 hours ago
No thanks. Yaml isn’t perfect but by God json is best used to return and parse data, not input it.
tiramichu@sh.itjust.works 10 hours ago
My biggest peeve with JSON when I’m forced to use it as a configuration file format is that it doesn’t have any syntactical support for comments.
So I can’t even add any notes to the file.
vinnymac@lemmy.world 4 hours ago
Yea, this is a deal breaker imo. My code tends to be 10 to 1 comments to lines of code ratio. Configuration even more so.
jsonc exists for this use case, but few tools actually use it, yaml is far more popular