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