在Jackson中处理布尔值和字符串吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Jackson中处理布尔值和字符串吗?相关的知识,希望对你有一定的参考价值。

我有一个JSON属性,可以是其中之一

{ "observed": true }
{ "observed": false }
{ "observed": "" }

我想映射它,以便在Java中它将是"true""false"""中的一个

@JsonProperty("observed")
private String observedValue;

然后我就做个吸气剂,给我一个

public Optional<Boolean> getObservedOpt() {
    if ("".equals(observedValue)) {
       return Optional.empty();
    } else {
       return Optional.of(Boolean.parseBoolean(observedValue));
    }
}

但是,我不确定如何将truefalse转换为字符串。或者,也许有一种更优雅的方法,无需进行字符串比较。

答案

我建议使用此功能ACCEPT_EMPTY_STRING_AS_NULL_OBJECT配置对象映射器,因此,如果为空字符串,它将分配给null

ObjectMapper mapper = new ObjectMapper()
    .enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

并且您可以愉快地将此字段声明为Boolean类型,请注意,如果为空字符串,则该字段值为null

@JsonProperty("observed")
private Boolean observedValue;

以上是关于在Jackson中处理布尔值和字符串吗?的主要内容,如果未能解决你的问题,请参考以下文章

c#中布尔值和布尔值的区别? [复制]

如何在 AEM 中的 json 中获取布尔值和数值 OOB

布尔值和选择 symfony 类型

类型-graphql。字符串、布尔值和数字的联合类型失败

返回布尔值和消息的Pythonic方式[重复]

day02python中的基本数据类型-布尔值和字符串