如何将默认值作为布尔字段的"true" 杰克逊属性



我正在使用杰克逊 api@JsonProperty注释来创建模型,我需要为布尔属性提供默认值为true(默认情况下为 false(。@JsonProperty默认值属性仅接受字符串。任何人都可以建议我如何为布尔模型属性提供默认值 true

我已经尝试了以下方法,但它不起作用

@JsonProperty(value = "field1", required = false)
@ApiObjectField(name = "field1", description = "field1")
private boolean field1 = true;
//getters and setters

下面的代码应该可以工作

@JsonProperty(value = "required")
private boolean required = true;

创建一个构造函数,该构造函数使用接收要设置为对象的所有 JSON 属性的@JsonCreator进行批注,并将默认值设置为具有 null 值的任何输入字段。

@JsonCreator
MyObject(@JsonProperty("field1") Boolean field1) {
this.field1 = field1 == null ? true : field1;
}

免责声明:我还没有测试上面的代码。

创建自定义序列化,然后添加它:

@JsonSerialize(using = MyCustomSerializer.class)
private boolean field1;

编写类似于以下内容的扩展:

public class MyCustomSerializer extends StdSerializer<Object> {
public MyCustomSerializer() {
super(Object.class);
}
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
//...
}

}

您也可以在 field getter 中执行此操作。

喜欢:

public Boolean getField1() {
this.field1 = field1 == null ? true : field1;
return field1;
}

最新更新