See this method: /** Reads a JSON string into the output, decoding any escaped characters. */ public void getString(CharArr output) throws IOException
And then the idea is to create a subclass of CharArr to incrementally handle the string that is written to it. You could overload write methods, or perhaps reserve() to flush/handle the buffer when it reaches a certain size. -Yonik On Thu, Sep 17, 2020 at 11:48 AM Christopher Schultz < ch...@christopherschultz.net> wrote: > All, > > Is this an appropriate forum for asking questions about how to use > Noggit? The Github doesn't have any discussions available and filing an > "issue" to ask a question is kinda silly. I'm happy to be redirected to > the right place if this isn't appropriate. > > I've been able to figure out most things in Noggit by reading the code, > but I have a new use-case where I expect that I'll have very large > values (base64-encoded binary) and I'd like to stream those rather than > calling parser.getString() and getting a potentially huge string coming > back. I'm streaming into a database so I never need the whole string in > one place at one time. > > I was thinking something like this: > > JSONParser p = ...; > > int evt = p.nextEvent(); > if(JSONParser.STRING == evt) { > // Start streaming > boolean eos = false; > while(!eos) { > char c = p.getChar(); > if(c == '"') { > eos = true; > } else { > append to stream > } > } > } > > But getChar() is not public. The only "documentation" I've really been > able to find for Noggit is this post from Yonic back in 2014: > > http://yonik.com/noggit-json-parser/ > > It mostly says "Noggit is great!" and specifically mentions huge, long > strings but does not actually show any Java code to consume the JSON > data in any kind of streaming way. > > The ObjectBuilder class is a great user of JSONParser, but it just > builds standard objects and would consume tons of memory in my case. > > I know for sure that Solr consumes huge JSON documents and I'm assuming > that Noggit is being used in that situation, though I have not looked at > the code used to do that. > > Any suggestions? > > -chris >