If you need a format that can transport byte arrays unmodified (image data, etc), msgpack (or protos or whatever) is much better than JSON since you don't have to base64 encode or escape the data. It also supports non-string keys which can be convenient.
I actually wrote some thoughts about this a few months ago [0]. tmux actually does a really good job in this regard, the config language is fairly simple, and if you want to do more complicated things you just shell out and then use the CLI which is great because it exposes all the things you can do in a config file.
reply