杰克逊编组结果放在地图上 - 奇怪的行为

时间:2014-06-16 13:23:48

标签: java map jackson

我在生产中有这个代码

final Map<String, String> parameters = new HashMap<String, String>();
parameters.put(FIELDTRACES, new ObjectMapper().writer().writeValueAsString(dlcTransformer.toEntityList(vo.getFieldTraces())));

在某些情况下失败(当从反序列化的JMS消息中检索到“vo”对象时):put操作没有向地图添加任何内容。

经过各种测试,我完成了这个似乎可以解决问题:

final String fieldTraces = new ObjectMapper().writer().writeValueAsString(dlcTransformer.toEntityList(vo.getFieldTraces()));
parameters.put(FIELDTRACES, fieldTraces);

临时变量如何改变行为?

杰克逊映射器来自jackson-mapper-asl-1.9.10

这里是ObjectWriter.writeValueAsString()实施

public String writeValueAsString(Object value)
    throws IOException, JsonGenerationException, JsonMappingException
{        
    // alas, we have to pull the recycler directly here...
    SegmentedStringWriter sw = new SegmentedStringWriter(_jsonFactory._getBufferRecycler());
    _configAndWriteValue(_jsonFactory.createJsonGenerator(sw), value);
    return sw.getAndClear();
}

在我尝试牺牲一只鸡之前,有人有想法^^?

0 个答案:

没有答案