gpt4 book ai didi

java - Jackson 是否将属性的第二个字符反序列化为小写

转载 作者:行者123 更新时间:2023-12-01 06:49:35 43 4
gpt4 key购买 nike

我们在服务代码中定义了一个模型 -

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class SomeData {

public boolean tnAvailable;

@NonNull
public String sTempChange;

public boolean isTnAvailable() {
return faAvailable;
}

public void setTnAvailable(boolean faAvailable) {
this.faAvailable = faAvailable;
}

@Nonnull
public String getSTempChange() {
return sTempChange;
}

public void setSTempChange(@Nonnull String sTempChange) {
this.sTempChange = sTempChange;
}

}

当查询响应中包含上述模型的 api 时,我们得到的响应为 -

"someData": {
"tnAvailable": true,
"stempChange": "trial_001"
}

令我们惊讶的是响应属性中的 stempChange(注意小写 t)而不是 sTempChange

怀疑原因是 Jackson com.fasterxml.jackson.core:jackson-core:2.5.2 在 API 调用期间序列化和反序列化对象时,因为我们不要使用任何其他 getter-setter 或包装器来更改属性。为什么会发生这种情况?序列化/反序列化是寻找这种情况的正确方向吗?

编辑 - 来自@Windle的评论,试图解释这里的不同之处。我重申“尽管问题与相同的情况几乎相关。但我也期待着 fastxml 中此类实现和文档的原因。”

最佳答案

处理 getter/setter 中的多个前导大写字母(例如“getURL()”或“getFName()”)。默认情况下,Jackson 将简单地将所有前导大写字母小写,给出“url”和“fname”。但是,如果您启用MapperFeature.USE_STD_BEAN_NAMING(在 Jackson 2.5 中添加),它将遵循 Java Bean 命名约定,即仅小写一个大写前导字母;如果找到多个,则不执行任何操作。这将导致属性“URL”和“FName”。

关于java - Jackson 是否将属性的第二个字符反序列化为小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43145150/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com