It seems to be maybe a bit less compact in terms of absolute number of bytes, but faster to parse. That is, parsing is just one-pass validation, and then data can be read directly from the buffer without an intermediate structure, with random access. It also has a notion of "pointer" so you can introduce sharing (a smart-ish encoder might use that to reuse common keys or strings, making the result smaller).