Yes. I'm advocating something "built-in" to Postgres. Any or all of those are likely a great starting point.
As for protobuf, I'm a big advocate -- it is easy to use, fast, extensible, runs on lots of platforms, and produces very compact output. However it introduces a few dependencies to the build and that may make it too difficult for wide options within Postgres.