Thanks -- I should have clarified that we've ruled that option out (it
was our first approach), since we want to stick to the built in types
that won't require explicit exchange with the primitive types.

jonathan

On Fri, Jun 17, 2016 at 02:56:49PM -0700, Edward Muller wrote:
> AFAIK (and someone will probably provide something better) you need to do 
> something like this: 
> 
> https://play.golang.org/p/riq-m6cgZu
> 
> > On Jun 17, 2016, at 2:37 PM, jg...@bitgirder.com wrote:
> > 
> > We have an upstream provider of JSON data which sends integer data
> > types as floating point literals with a "0" decimal part. By default
> > json.Decoder doesn't allow this and fails:
> > 
> >    https://play.golang.org/p/MEJlg1n3vs
> > 
> > Unfortunately this provider is almost certain not to change this, and
> > so we just have to deal with it as clients of their API. What are some
> > ways we could handle this?
> > 
> > Things that come to mind:
> > 
> >    - Submit a change to encoding/json that allows us to set some sort
> >      of number processing function to customize its behavior (or to
> >      set some sort of policy which allows number literals ending in
> >      \.0*$ for integer targets)
> > 
> >    - Create a custom io.Reader which wraps in input stream by reading
> >      individual tokens from it using an internal json.Decoder, and
> >      then emits number literals without trailing ".0". 
> > 
> >    - Buffer all inbound decodes into a map[string]interface{} and set
> >      the decoder to UseNumber(), and then replace those json.Numbers
> >      with corrected ones, then serialize back and decode once more
> >      into the destination (this is similar to the token-stream
> >      approach above)
> > 
> > Are there other approaches I'm overlooking?
> > 
> > jonathan
> > 
> > -- 
> > 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.
> > For more options, visit https://groups.google.com/d/optout.

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to