I was trying to deserialize a log event written by the JSONLayout appender,
which uses Jackson.  I therefore also am using Jackson but with the
MrBeanModule, which is a POJO materializer.  After much difficulty with
Jackson throwing deserialization exceptions with the "contextMap" field, I
learned that the map is actually written out as a List of Maps (i.e.
List<Map<String,String>>.  I've included one such event here, with
unnecessary fields shortened:

{"timeMillis":...,"thread":"...","level":"OFF","loggerName":"...","message":"...","endOfBatch":false,"loggerFqcn":"...","contextMap":[{"key":"LOGROLL","value":"com.xxx.xxx.handler.event.FailoverHandler"},{"key":"ROUTINGKEY","value":"elasticsearch-rollover"}]}

I'm curious why the contextMap is represented as the more complex List of
single entry Maps, as opposed to a single multi-valued Map?  So, instead of
something that looks like:


{"contextMap":[{"key":"key1"},{"value":"value1"},{"key":"key2"},{"value":"value2"},...]

I would expect the much simpler (and easily parseable):
    {"contextMap":{"key1":"value1","key2":"value2",...}.

Is this intended?

Thanks,
Robin.

Reply via email to