So you are hacking the stream before passing it to the unmarshalling framework? 
 Then you will have to keep track of the ‘{‘ and ‘}’ characters yourself, 
either with the stack Matt suggests or as a counter.

Ralph

On Apr 1, 2014, at 8:07 AM, Matt Sicker <[email protected]> wrote:

> Keep a stack of {'s and pop them when you get a }. Like a deterministic 
> pushdown automaton.
> 
> 
> On 1 April 2014 07:45, Gary Gregory <[email protected]> wrote:
> I have a local patch for LOG4J2-583 to have the Log4j TCP and UDP socket 
> servers unmarhsal XML log events.
> 
> This is "easy" for XML because when you have a stream of bytes and you know 
> its encoding, you can look for the end of an event by looking for its closing 
> tag: </Event>. Right now, my XML processing code, looks for the end tag and 
> feeds JAXB a substring from the buffer. Easy. Done.
> 
> Not so much with JSON. You cannot use the same hack, there is no end tag. All 
> you have is an "end of object" closing bracket "}" which looks the same as 
> the closing marker for all other objects.
> 
> So it looks like I would need to hook in a little deeper into a JSON 
> unmarshalling framework to extract each JSON log events as I see them.
> 
> Any thoughts here?
> 
> Gary
> 
> -- 
> E-Mail: [email protected] | [email protected] 
> Java Persistence with Hibernate, Second Edition
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
> 
> 
> 
> -- 
> Matt Sicker <[email protected]>

Reply via email to