不知道为什么,妈的,本地测试没有问题,转换后是包含所有属性的json字符串,没有类名。部署上去有概率出现,出现的原因未知,后面有时间再看。问题原因已找到,在下方。
代码:
public static String beanToJson(Object src) {
try {
return objectMapper.writeValueAsString(src);
} catch (JsonProcessingException jpe) {
throw new RuntimeException("JacksonUtils beanToJson JsonProcessingException!",jpe);
}
}
预期结果:
{
"123": "123"
}
概率出现的错误结果
{
"xxxReq":
{
"123": "123"
}
}
解决方法:
public static String beanToJsonWithDisableRoot(Object src) {
try {
objectMapper.disable(SerializationFeature.WRAP_ROOT_VALUE);
return objectMapper.writeValueAsString(src);
} catch (JsonProcessingException jpe) {
throw new RuntimeException("JacksonUtils beanToJson JsonProcessingException!",jpe);
}
}
问题原因:
objectMapper是一个静态对象:
private static ObjectMapper objectMapper = new ObjectMapper();
在其他方法里有对该对象进行修改,比如:
objectMapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
导致静态对象被修改。。。