使用不常见 getter 方法名称的序列化中的 Jackson 命名约定问题
Jackson naming convention issue in serialization with uncommon getter method name
java 和 spring 启动的新功能。
尝试序列化以下 class、
public class ActionItems {
private String APpID;
public String getAPpID() {
return APpID;
}
public void setAPpID(String aPpID) {
APpID = aPpID;
}
// other fields
}
得到 json 字符串作为
{
"appID": null,
}
同时,使用 decapitilize() 交叉检查 getter 名称,它与字段名称匹配。
Introspector.decapitalize("APpID") - gives "APpID"
jackson 在从 getter 方法生成 属性 名称时是否使用了一组不同的规则和方法?
PS: 我知道,变量名应该以小写开头。在查看 java beans 命名约定规范时遇到了这个问题。
我用的是jackson 2.9.3v.
PS:根据link 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 和 spring 启动的新功能。
尝试序列化以下 class、
public class ActionItems {
private String APpID;
public String getAPpID() {
return APpID;
}
public void setAPpID(String aPpID) {
APpID = aPpID;
}
// other fields
}
得到 json 字符串作为
{
"appID": null,
}
同时,使用 decapitilize() 交叉检查 getter 名称,它与字段名称匹配。
Introspector.decapitalize("APpID") - gives "APpID"
jackson 在从 getter 方法生成 属性 名称时是否使用了一组不同的规则和方法?
PS: 我知道,变量名应该以小写开头。在查看 java beans 命名约定规范时遇到了这个问题。
我用的是jackson 2.9.3v.
PS:根据link 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;
}