If you can guarantee your input is always pretty printed like that, you 
could use bufio with a custom splitfunc to match `\n{`, no need to double 
parse json

On Sunday, March 28, 2021 at 11:35:20 PM UTC+2 greg.sa...@gmail.com wrote:

>
> I've tried this suggestion and although its certainly a bit more 
> refactoring then I expected - the outcome looks to be exactly as you 
> described here.
>
> Thank you so much for the suggestion, take a bow!
>
> - Greg
>
>
> On Sunday, March 28, 2021 at 12:15:34 PM UTC-7 Brian Candler wrote:
>
>> No, it's even simpler than that:
>>
>> * The first call to decoder.Decode() will return the first object in the 
>> stream.
>> * The second call to decoder.Decode() will return the second object in 
>> the stream.
>> * And so on...
>>
>> By "object" I mean top-level object: everything between the opening "{" 
>> and its matching closing "}", including all its nested values.  (Define a 
>> struct which contains all the nested attributes, for it to be deserialized 
>> into).
>>
>> If an io.Reader stream consists of a series of separate JSON objects - as 
>> yours does - then you get one object at a time.  They don't have to be 
>> separated by whitespace or newlines, but they can be.
>>
>> Don't think about seeking.  I don't know the internals of 
>> decoder.Decode(), but I would expect that it reads in chunks from the 
>> io.Reader.  This means it will likely overshoot the object boundaries, but 
>> will buffer the excess and process it on the next call to Decode.
>>
>

-- 
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/d813c500-bde7-4df3-a623-f179ff02ceaan%40googlegroups.com.

Reply via email to