It is not necessary. I chose to build a protobuf based serialization and communication since it is widely used in distributed system and more performant than JSON based serialization.
Another reason was ease of use especially because Netty already supports message encoders and decoders for conversion between protobuf and bytebuf.
You could also use https://github.com/FasterXML/jackson-databind but that would require a reasonable amount of custom code for the encoder and decoders