Re: [go-nuts] Json decode : Monitoring errors properly
I got it. In fact, if the buffer is bad, it is not erased, and Buffered() returns it (and not the following). That was my misunderstanding. Thank you all ! On Thursday, 27 December 2018 00:31:12 UTC+1, Kevin Conway wrote: > > > I believe https://golang.org/pkg/encoding/json/#Decoder.Buffered was > added for this purpose. > > I just caught on that this method is exactly what you showed in the > original message. I guess my input can be reduced to "I think that's your > only option when using the decoder". > > I do think you've correctly identified they the buffer isn't guaranteed to > contain the whole object since the decoder has early exit error conditions. > I'm not sure how you'd change that without rewriting the decoder. > >> -- 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.
Re: [go-nuts] Json decode : Monitoring errors properly
> I believe https://golang.org/pkg/encoding/json/#Decoder.Buffered was added for this purpose. I just caught on that this method is exactly what you showed in the original message. I guess my input can be reduced to "I think that's your only option when using the decoder". I do think you've correctly identified they the buffer isn't guaranteed to contain the whole object since the decoder has early exit error conditions. I'm not sure how you'd change that without rewriting the decoder. > -- 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.
Re: [go-nuts] Json decode : Monitoring errors properly
> For example, the error returned may show : "*invalid character 'G' looking for beginning of value*". But you can't see the original message. I believe https://golang.org/pkg/encoding/json/#Decoder.Buffered was added for this purpose. For example, https://play.golang.org/p/yAn2fypIELc > 1- I'm not sure the buffer is always complete at the time I call the ReadAll ReadAll (https://golang.org/pkg/io/ioutil/#ReadAll) reads until the io.EOF. If you're using long lived TCP connections on which you expect to have multiple request/response cycles then you likely don't want to use ReadAll since the stream won't encounter an EOF until some later point in time. The Decoder is made for the streaming case is very likely the right choice over reading things in with other tools. > 2- It can be time-consuming I don't know that you're necessarily going to avoid this problem using the json.Decoder. As it was pointed out, the current implementation of Decoder continues to read and buffer bytes from the stream until it has enough to represent a whole object before it decodes it. There may be some early exit cases from errors in the "decoderState" that is used to manage the internal buffer but I don't expect they should be relied on for performance. -- 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.