On Fri, Aug 9, 2019 at 3:32 PM Jonathan Hall <fli...@flimzy.com> wrote:
>
> I think you're right that most people are frustrated by the encoder, but as I 
> mentioned in another message just a bit ago, the same fundamental problem 
> exists with decoder, and for certain workloads, I believe it should be solved.
>
> Having said that, I think tackling the writer first definitely makes the most 
> sense.
>
> With the decoder, at least it's possible, although terribly cumbersome, to 
> cobble together a solution with the tokenizer interface of json.Decoder. And 
> truth be told, my proposal wouldn't really elminate the use of the tokenizer 
> interface--but it would make it possible to use it on a burried type (i.e. 
> within a UnmarshalJSONStream() method), to achieve the benefit of stream 
> reading.

It may not be terribly cumbersome, and may not need the tokenizer
interface. I have a json streaming library (streaming in the sense
that multiple json docs one after the other, not one large doc) based
on the std encoder/decoder, and something like that can be developed
to deal with large json docs.

https://github.com/bserdar/jsonstream




>
>
>
> On Friday, August 9, 2019 at 10:17:41 PM UTC+2, burak serdar wrote:
>>
>> On Fri, Aug 9, 2019 at 2:10 PM Robert Engels <ren...@ix.netcom.com> wrote:
>> >
>> > I'm sorry, maybe I didn't understand your original concern. There is an 
>> > example of doing stream based processing in the json package (using 
>> > Decoder).
>> >
>> > How is this not sufficient?
>> >
>> > The only problem I see with it is that it doesn't allow error 
>> > correction/continuation, but in the modern world that seems rather rare 
>> > (or very difficult to do well).
>>
>> I was thinking similarly and after reading those github issues, it
>> looks like the main problem is with Encoder, and not with Decoder.
>> Encoder's problem can be solved by providing an unbuffered output
>> option that directly writes to the io.Writer.
>>
>> I like the idea of stream-friendly marshaler/unmarshaler interfaces.
>>
>> >
>> > -----Original Message-----
>> > From: Jonathan Hall
>> > Sent: Aug 9, 2019 11:00 AM
>> > To: golang-nuts
>> > Subject: Re: [go-nuts] RFC for opt-in streaming support in encoding/json 
>> > package
>> >
>> > An interesting observation.
>> >
>> > Although in a sense, we already have the decoding half of that low-level 
>> > streaming API exposed by way of the `json.Decoder` type.
>> >
>> > Would you be suggesting that a separate, stream-based API makes sense even 
>> > within the stdlib?
>> >
>> > I'm not really sure what that separate API would look like, or do 
>> > differently than my proposal (I'm open to new ideas, though).
>> >
>> > Given that the "Go way" of handling streams is with io.Reader/io.Writer 
>> > (as opposed to events, for example), and the internal implementation of 
>> > `json/encoding` is already so close to that, I wonder if the APIs would 
>> > end up looking very much the same, anyway.
>> >
>> > Jonathan
>> >
>> >
>> > On Friday, August 9, 2019 at 5:53:41 PM UTC+2, Robert Engels wrote:
>> >>
>> >> In other environments (e.g. Java), the streaming processors are distinct 
>> >> from the instance oriented - usually for good reason as the APIs are very 
>> >> different - the former is usually event based, and the latter returns 
>> >> realized instances as a whole or an error. The streaming processors can 
>> >> often skip ill-formed entities, and/or have them manipulated during 
>> >> decoding.
>> >>
>> >> -----Original Message-----
>> >> From: Jonathan Hall
>> >> Sent: Aug 9, 2019 10:38 AM
>> >> To: golang-nuts
>> >> Subject: Re: [go-nuts] RFC for opt-in streaming support in encoding/json 
>> >> package
>> >>
>> >> Thanks for the reply. My responses inline below.
>> >>
>> >> On Friday, August 9, 2019 at 5:14:52 PM UTC+2, burak serdar wrote:
>> >>>
>> >>> On Fri, Aug 9, 2019 at 8:53 AM Jonathan Hall <fli...@flimzy.com> wrote:
>> >>> >
>> >>> > Can you say more? Better in which way?
>> >>>
>> >>> Better in the way that it wouldn't change existing code.
>> >>
>> >>
>> >> That doesn't seem like a benefit, in its own right
>> >>
>> >> I understand the desire not to just change code for its own sake, or add 
>> >> extra features nobody needs. But people have been asking for these types 
>> >> of features for several years.  This doesn't seem like a frivolous code 
>> >> change to me.
>> >>
>> >>>
>> >>> Also, I think
>> >>> the use cases for existing and proposed json encoders/decoders are
>> >>> different enough to justify a separate implementation.
>> >>
>> >>
>> >> I don't think I agree with this.
>> >>
>> >> The proposal deals with a subset of current use cases, but not, strictly 
>> >> speaking, a _different set_ of use cases. And the number of commentators 
>> >> on the issues linked above, I think lends weight to the idea that the use 
>> >> cases this proposal addresses are not insignificant, or fundamentally 
>> >> "different".
>> >>
>> >> If I were to fork the standard `encoding/json` library, and add my 
>> >> proposed functionality, the code would still be 95% the same. Standard 
>> >> reasons for sharing code apply, as far as I can tell.
>> >>
>> >> --
>> >> 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 golan...@googlegroups.com.
>> >> To view this discussion on the web visit 
>> >> https://groups.google.com/d/msgid/golang-nuts/df688733-a2e9-4bc8-aa7b-09267827007a%40googlegroups.com.
>> >>
>> >>
>> >>
>> >>
>> > --
>> > 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 golan...@googlegroups.com.
>> > To view this discussion on the web visit 
>> > https://groups.google.com/d/msgid/golang-nuts/718e2b9e-39e2-44f2-9308-8c94e31afbff%40googlegroups.com.
>> >
>> >
>> >
>> >
>> > --
>> > 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 golan...@googlegroups.com.
>> > To view this discussion on the web visit 
>> > https://groups.google.com/d/msgid/golang-nuts/924142684.7377.1565381399326%40wamui-agami.atl.sa.earthlink.net.
>
> --
> 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/4d901ba9-5724-45cd-b7f7-24fccd9ef5db%40googlegroups.com.

-- 
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/CAMV2Rqp%3D8Ughztq4cn714J5prsoAx57GOevBJOqUqV4sMyMkGg%40mail.gmail.com.

Reply via email to