Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson数据绑定JSON布尔转换_Java_Json_Jackson_Pojo - Fatal编程技术网

Java Jackson数据绑定JSON布尔转换

Java Jackson数据绑定JSON布尔转换,java,json,jackson,pojo,Java,Json,Jackson,Pojo,我正在使用Jackson objectMapper将JSON转换为对象,进行一些转换并将其转换回JSON JSON类似于{“id”:“abc1243”,“val”:1,“isDel”:true} 在上面的例子中,val是int,isDel是boolean 我的对象定义如下 public class MyObj{ private String id; private String val; private String isDel; //getters and setters

我正在使用Jackson objectMapper将JSON转换为对象,进行一些转换并将其转换回JSON

JSON类似于
{“id”:“abc1243”,“val”:1,“isDel”:true}

在上面的例子中,val是int,isDel是boolean

我的对象定义如下

public class MyObj{
  private String id;
  private String val;
  private String isDel;
   //getters and setters

}
当我将JSON转换为MyObj时,字符串id和Int val被绑定到字符串中,但是布尔值没有绑定,因此我得到null

我使用下面的方法

   ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    try {
        MyObj myObj = mapper.readValue(new File("/Users/sample.json"), MyObj.class);
}

我可以知道为什么布尔值没有绑定到字符串成员。

将JSON中的
布尔值映射到Java中的布尔值是很自然的


其中,令牌类型通过类使用
base.isAssignableFrom(Boolean.class)
进行测试,在这种情况下,它是不可赋值的,因为它是字符串,因此未映射

您可以有一个接受布尔值并进行必要转换的setter

@JsonProperty("isDel")
public void setIsDel(boolean isDel) {
  this.isDel = String.valueOf(isDel);
}

注意:这不会干扰接受字符串的setter(注释告诉Jackson使用此特定方法)

快速提问,既然您想要一个布尔字段,为什么不在pojo本身中将其设置为此?您尝试过“private boolean isDel;”而不是'private String isDel;`?或者将
{“id”:“abc1243”,“val”:1,“isDel”:true}
更改为
{“id”:“abc1243”,“val”:1,“isDel”:“true”}
基本上将字符串视为String@bhantol事实上,这可能是真的,但问题仍然存在,为什么不只是一个布尔字段。@Aris我需要使用这个pojo生成一个严格的JSON,因为我发布的api需要它。喜欢“假”而不是假