I've been investigating about protobuf/gRPC. I really like the idea of being able to use a common *proto file as IDL to centralize the definition of structs and services, as well as all the existing tooling around it to create common code for clients and servers (gRPC plugin) in different programming languages.
What I don't really like is that if forces a binary serialization format. I would like protobuf to have the option to switch between JSON or binary format.
I'm wondering what alternatives (if any) provide the advantages of protobuf/gRPC (many languages, IDL, template code for client and servers) while still allowing for JSON encoding.
Is it possible that protobuf already allows for JSON through some feature I'm not aware of?