gpt4 book ai didi

java - @JsonProperty 似乎只适用于非 boolean 成员

转载 作者:行者123 更新时间:2023-12-02 02:29:53 25 4
gpt4 key购买 nike

我有一个对象正在尝试映射到 JSON,除了 boolean 成员之外,一切似乎都运行得很好,如下所示:

public class Foo implements Serializable {

@JsonProperty("this_does_not_work")
private boolean isBar;

@JsonProperty("this_works")
private int bar;

@JsonProperty("this_works_too")
public boolean isBar() {
return isBar;
}

}

这将被序列化为:

{
this_works: ...,
this_works_too: ...
}

为什么 boolean 成员不能有 @JsonProperty (但他们的 getter 有)?

最佳答案

总结评论中的陈述:如果将 boolean 字段名称更改为enabled

@JsonProperty("custom_name")
private boolean enabled;

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean isEnabled) {
this.enabled = isEnabled;
}

它将给出所需的输出{ "custom_name": true }

最初的问题是不遵循java字段命名约定:

@JsonProperty("custom_name")
@Column(name = "fl_enabled")
private boolean isEnabled;

public boolean isEnabled() {
return isEnabled;
}

public void setEnabled(boolean isEnabled) {
this.isEnabled = isEnabled;
}

当 FasterXML 序列化对象时,它会查找字段和 getter。

在您的情况下,它找到 boolean 字段isEnabled并使用custom_name对其进行序列化。

然后它从处理中排除了这个 boolean 字段的 getter - 可能要排除的 getter 名称是 getIsEnabled 和 'isIsEnabled' - 你没有任何。

然后它找到方法 isEnabled,它看起来像字段 enabled 的 getter。因此它获取它的值并使用键 enabled 对其进行序列化。

再说一次,问题是你不应该用前缀 is 命名 boolean 字段。

关于java - @JsonProperty 似乎只适用于非 boolean 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293589/

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