connectrpc / connect-go

The Go implementation of Connect: Protobuf RPC that works.
https://connectrpc.com
Apache License 2.0
3.02k stars 106 forks source link

Add support for supplying protojson Marshal options to json codec. #793

Open jmmills opened 3 weeks ago

jmmills commented 3 weeks ago

Is your feature request related to a problem? Please describe. For certain cases of javascript ecosystem interoperability it may be required to control certain behaviors for how json is rendered. protojson offers this via the MarshalOptions

Describe the solution you'd like Offer the ability to either inject codec specific options via middleware and/or set default configuration on service startup.

Describe alternatives you've considered Implementing a custom codec that does the same thing as the canonical json codec with the added ability to inject marshal options.

Additional context It seems like the most useful options from the perspective of how data is rendered are EmitUnpopulated, EmitDefaultValues

jhump commented 3 weeks ago

We've gotten a lot of feedback that folks would like to see that functionality in this core package and are taking it under consideration. In the meantime, there is a high-quality implementation of what you're looking for in this 3rd party package: https://github.com/akshayjshah/connectproto