It's inconsistent and annoying. Expressive, yes. Gets it's job done, yes. Absolute nightmare of a spec, YES.
The fact that JSON is a subset of YAML should tell you everything about how bloated the spec is. And of course there's the "no" funny things.
Personally, my favourite way to write configs was using lua (because it was already part of the project so why not), but JSON does fine.
Yeah, I remember when I was trying to parse XML into some lua tables and it forever stumped me how to represent something like
You just have to have different ways to turn different tags into stuff in your program and that's a huge amount of overhead to think about when all I want is a hash map and maybe an array.