gpt4 book ai didi

java - 使用 jackson 转换 Java 对象时如何忽略可选属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:07 24 4
gpt4 key购买 nike

我正在使用 Jackson 1.9.2(org.codehaus.jackson) 从 Java 对象转换为匹配的 JSON 结构。这是我的 java 对象:

Class ColorLight {
String type;
boolean isOn;
String value;

public String getType(){
return type;
}

public setType(String type) {
this.type = type;
}

public boolean getIsOn(){
return isOn;
}

public setIsOn(boolean isOn) {
this.isOn = isOn;
}

public String getValue(){
return value;
}

public setValue(String value) {
this.value = value;
}
}

如果我进行以下转换,我会得到我想要的结果。

ColorLight light = new ColorLight();
light.setType("red");
light.setIsOn("true");
light.setValue("255");
objectMapper mapper = new ObjectMapper();
jsonString = mapper.writeValueAsString();

jsonString 会是这样的:

{"type":"red","isOn":"true", "value":"255"}

但有时我没有isOn属性的值

ColorLight light = new ColorLight();
light.setType("red");
light.setValue("255");

但 jsonString 仍然是这样的:

{"type":"red","isOn":"false", "value":"255"}

其中“isOn:false”是 Java boolean 类型的默认值,我不希望它存在。我怎样才能像这样删除最终 json 结构中的 isOn 属性?

{"type":"red","value":"255"}

最佳答案

跳过不存在的值:

  • 使用 Boolean 而不是 boolean 原语(boolean 值总是设置为 true错误).
  • 使用 @JsonInclude(Include.NON_NULL)@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) 将 Jackson 配置为不序列化空值,具体取决于版本。

关于java - 使用 jackson 转换 Java 对象时如何忽略可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24622635/

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