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.

Reply via email to