前言
今天被同事问到一个序列化的问题,”在SpringBoot默认序列化的情况下,Web请求的JSON字段包含首字母小写第二个字母大写的变量名无法解析(aName)“。在经过多次尝试不同的命名规则(aaName、aaa)等均可反序列化。由于SpringBoot默认采用Jackson作为序列化工具,所以猜测是由于Jackson反序列化时有一些小bug。
复现
SpringBoot:2.1.8.RELEASE
Jackson Version:2.9.9
Web JSON:
{
"aName":"jackson"
}
Java Object:
public class Test {
private String aName;
}
Controller:
@PostMapping("test")
public void testDeserialization(@RequestBody Test test) {
System.out.println("反序列化为:" + test.getAName());
}
调用该接口发现控制台打印结果:“反序列化为:null”
排查
因为