I use JSON (and occasionally YAML), but only for data interchange formats where I don't expect a human to need to modify it.
Yes, I am aware that JSON and YAML are largely related. And I a few times tried to write up files in JSON, just as a mockup of my intended data structure. Yes, I used a real editor with proper tab indenting. It still got to be pretty unreadable. I use Data::Dumper whenever I want the data format to be as explict as possible, but only for debugging.
But it's so much worse than that. XML doesn't NEED the indenting, so if some tard uses wordpad or notepad or something equally stupid to modify the file, he CANNOT mess it up.
Yes, you want to assume that only Real Programmers will be modifying your data. I had to unlearn that theory, and I'm working for a very well known internet company (I'd rather not say, albeit I may have left clues [or even spilt the beans] in other comments).
In particular, I had used XML for a human writable/readable data file (the same project I had tried to use JSON for), and was told a month ago that I had to write a GUI editor for it, or it just wouldn't get used. That and I've watched a few QA contractors and simply how little actual programming they know.
XML also gets a lot of flack b/c it is typically 'too hard to parse' whereas YAML and JSON are intended to be trivially parsed into a natural tree format... On the other hand, I found a perl module (XML::TreePP) that makes XML just as simple to manipulate.