On Fri, 2021-09-24 at 09:55 +0100, Ian Davis wrote: > On Fri, 24 Sep 2021, at 9:36 AM, 'Dan Kortschak' via golang-nuts > wrote: > > On Fri, 2021-09-24 at 01:03 -0700, Brian Candler wrote: > > > On Friday, 24 September 2021 at 08:25:31 UTC+1 Brian Candler > > > wrote: > > > > The documentation says it prefers exact match over case- > > > > insensitive, but example 3 contradicts that. It seems to be > > > > last- > > > > match that wins. > > > > > > > > > > > > > > I realise now what they mean now: if there are multiple struct > > > tags > > > defined which differ only in case, then the one which matches the > > > incoming field exactly is preferred. > > > https://play.golang.org/p/Do1dPxLOaCj > > > > > > > This still seems to conflict with the JSON-RPC spec: > > https://jsonrpc.org/historical/json-rpc-1-1-alt.html#service-procedure-and-parameter-names > > > > And it doesn't even appear to use the exact match in preference > > depending on the order of the JSON keys > > https://play.golang.org/p/SQyE3R-GGNn > > > > I think this is working as expected. For each key in the input json > the unmarshaller looks for a matching struct field to hold the data > preferring an exact match and falling back to case insensitivity. If > there are multiple json keys that map to a single field then they > will overwrite any previously matched keys. > > This modification to your example illustrates it better: > https://play.golang.org/p/Ipp67LMG1Kt > > Ian >
I agree that it can be made to work; I constructed the example that way it is to demonstrate the failure. Needing to guard case that way is pretty surprising and certainly makes it impossible to implement a spec-compliant JSON-RPC on top of encoding/json. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/5f5b8f81be732612520290ef0f95812a2bb40323.camel%40kortschak.io.