First, nearly everything in this post is opinion, so just imagine I've written "in my opinion" where necessary. :)
I've used symbolic expressions (i.e., Lisp) to great success.
It's more readable as JSON, and much more readable than XML, but the main advantages are that
- It's (obviously) trivial to manipulate/restructure/analyze/emit programmatically;
- It's got excellent support for hand-editing if necessary; and
- It's got almost no syntax.
JSON is not a bad choice. The tool support for JSON (especially for hand-editing) is worse than Lisp's, but it's increasingly popular. The equivalent manipulation language is Javascript, which is less powerful and less convenient. If you were working with Javascript I would select JSON. It is noisier (there is more syntax) than S-expressions.
There are existing parsers for S-expressions:
http://sexpr.sourceforge.net/
http://people.csail.mit.edu/rivest/sexp.html
There are also small embeddable Lisp interpreters if you really need such a thing. There are equivalent EMCAScript interpreters for JSON, but I expect that a lisp interpreter is likely to be much smaller.
With this being said, you should pick a format consistent with the other tools you'll be working with. Even if it's XML.