There's also
YAML, which is both easier and more concise than XML and much more powerful than JSON, if you need it to be. Some people find its significant indentation (like Python or CoffeeScript) infuriating, but YMMV. I find the indented block syntax to be extremely readable.
All objects in YAML are represented as either maps, lists or scalars, but they can be tagged to tell the deserialiser what kind of object they should become. This might seem like overkill, but it's extremely useful if you want to dump objects from one language and load them in another. Provided that your YAML library supports custom tags, I mean. The one for Ruby does, but I know some implementations are kind of half-assed.
A bonus feature of YAML is that, as of 1.2, all valid JSON is also valid YAML. This is a one-way relationship and most YAML is probably not valid JSON. :)