json decoding is non trivial. The fact you even need a library is a downside.
Discussion
I know. I just spent a year writing the JSON serialization for complex class trees for a product at work.
Binary has a large number of issues as well. Versioning, architecture differences (big vs. little Indian), and is not human readable for debugging. How are you going to handle additions to the protocol in a way that doesn't break existing clients, etc?
This is an optional optimization, you can ignore it. It is just advertised in relay metadata and if clients want to use it they can. Versioning is not an issue with TLV and we’re talking fixed formats here, notes and subscriptions don’t change much. If new fields are added to notes or filters then it would just be a new type.
have you considered using protocol buffers for the binary message?
why