Our company implemented two rpc protocols(don't ask me why..)
One is based on json, one is modified thrift. The schemaless feature is among the many problems of json, but it's not the most annoying one. That would be binary support.
Imagine we need to make a upload/download storage service with json rpc...So as a rule of thumb, I would consider:
1. Web facing? json would do.
2. RPC? Pick protobuf or thrift or any protocol supporting native types including binary.