Java 和 Spring Boot 新手。
在尝试序列化以下类时,
public class ActionItems {
private String APpID;
public String getAPpID() {
return APpID;
}
public void setAPpID(String aPpID) {
APpID = aPpID;
}
// other fields
}
得到的json字符串为
{
"appID": null,
}
同时,使用 decaptilize() 交叉检查 getter 名称,它与字段名称匹配。
Introspector.decapitalize("APpID") - gives "APpID"
jackson 在从 getter 方法生成属性名称时是否使用了一组不同的规则和方法?
PS:我知道变量名应该以小写字母开头。在查看 java beans 命名约定规范时遇到了这个问题。
我使用的是 jackson 2.9.3v。
PS:根据链接PropertyNamingStrategy ,它应该生成 APpID 而不是 appId 对吗?
有人可以在这里提供一些意见吗?
谢谢。
最佳答案
在 jackson ,您可以自定义PropertyNamingStrategy
,并且
In absence of a registered custom strategy, default Java property naming strategy is used, which leaves field names as is, and removes set/get/is prefix from methods (as well as lower-cases initial sequence of capitalized characters).
此外,您还可以自定义属性名称,例如:
@JsonProperty("APpID") // produce {"APpID":"s"}
public String getAPpID() {
return APpID;
}
关于java - 具有不常见 getter 方法名称的序列化中的 Jackson 命名约定问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54041218/