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.