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.