java - 具有不常见 getter 方法名称的序列化中的 Jackson 命名约定问题

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

同时,使用 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/

相关文章:

java - 将线性链表打印到表中

java - 在 Java 中计算反函数

java.io.StreamCorruptedException : invalid stream header: 626F6775 using mysql blob, java对象和自定义对象

java - spring cache redis : LazyInitializationException failed to lazily initialize a collection, 无法初始化代理 - 无 session

java - 我如何强制 Jackson 使用对象的 setter ?

java - Jackson 调用 setter 但嵌套对象的字段仍为空

java - 不区分大小写的搜索和替换

java - Eclipse 中的平台特定代码

java - Java中多个类可以序列化同一个对象吗?

c# - 如何拥有一个带有 json 动态成员的 WCF DataContract