Any performance numbers?
Serialization/deserialization of a typical protobuf struct takes a microsecond or two, but it generates some garbage, so GC ends up slowing you down if you try to go really crazy and push past 100k req/s in one process with non-trivial message structures.
I've unfortunately been bitten before by choosing json as a serialization format, specifically in go, due to JSON performance dominating processing.
No criticism though, JSON is the right choice for many types of APIs.
Protobuf serialization isn't free, but it's definitely cheaper than JSON serialization.