If extensibility is needed, then something like MessagePack, CBOR, or BEVE makes sense. I don't know which one among them. The CBOR standard turns out to be massive and looked pretty ugly so I looked away... which is disappointing because it is widely used. BEVE looks far simpler and they say faster and smaller. I didn't peek at MessagePack but then again I'm not sure extensibility via changing data types is a good idea. Consider me nudged though.
Discussion
Might need more metadata for extensibility if you would want some sort of custom key-map capability.
JSON is easy to extend, it is sort of a given but I don't know much about CBOR or BEVE