我在生产中有这个代码
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();
}
在我尝试牺牲一只鸡之前,有人有想法^^?