It might be nice to discuss how this differs from the various other formats. From what I can see the one above mostly differs in that it allows any bytes as strings, where as this spec only allows utf8 (and allows floats), similarly the keybase spec seems similar except they only allow printable ascii keys.
See: http://wiki.laptop.org/go/Canonical_JSON
I noticed that this is used by the update framework.
I suspect it might be relevant to mention.
It might be nice to discuss how this differs from the various other formats. From what I can see the one above mostly differs in that it allows any bytes as strings, where as this spec only allows utf8 (and allows floats), similarly the keybase spec seems similar except they only allow printable ascii keys.