为什么杰克逊2不认识第一个大写字母,如果前导骆驼大小写单词只有一个字母长?
我正在使用Spring 4 MVC和Jackson 2进行我的服务。对于其中一个操作,我有一个请求对象,该对象具有一个属性,其中前导骆驼大小写单词的长度仅为一个字母:
private String aLogId;
此类具有适当命名的 getter 和 setter:
public String getALogId() { return aLogId; }
public void setALogId(String aLogId) { this.aLogId = aLogId; }
但是,当我尝试使用相应的JSON属性向此服务发布请求时:
{"aLogId":"This is a log id"}
我收到来自Spring框架的500响应,说该字段无法识别,并且我的控制器类从未被调用:
无法读取 JSON:无法识别的字段“aLogId”(类
但是,当我将“L”更改为小写时,请求将按预期反序列化,并且我的控制器类被命中:
{"alogId":"This is a log id"}
为什么 Jackson 期望“L”是小写的,而它显然是驼峰大小写约定中属性的第二个单词,并且打算使用大写?是因为第一个单词只有一个字母长吗?
请求对象中还有其他属性,其中第一个单词是多个字母,并且那些属性的属性在以防万一时不会遇到相同的不匹配问题。