序列化中的Jackson命名约定问题,使用不常见的getter方法名称

时间:2019-01-04 14:49:17

标签: java serialization jackson javabeans jackson2

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,     
}

同时,用decapitilize()交叉检查吸气剂名称,它与字段名称匹配。

Introspector.decapitalize("APpID") - gives "APpID"

从getter方法生成属性名称时,杰克逊是否使用一组不同的规则和方法吗?

PS:我知道,变量名应以小写开头。在遍历Java bean命名约定规范时遇到了这个问题。

我正在使用杰克逊2.9.3v。

PS:根据链接PropertyNamingStrategy,它应该产生APpID而不是appId对吗?

有人可以在这里提供一些输入吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

在Jackson中,您可以自定义PropertyNamingStrategy,并且

  

在没有注册自定义策略的情况下,默认Java属性   使用命名策略,将字段名称保持不变,并删除   从方法中设置/获取/是前缀(以及小写的缩写   大写字母顺序)。

此外,您可以自定义属性名称,例如:

@JsonProperty("APpID") // produce {"APpID":"s"}
public String getAPpID() {
    return APpID;
}