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 -- 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/11c9e6cb-dcad-4d48-8a8a-de8ecef4fb75%40www.fastmail.com.