Java Jackson数据绑定JSON布尔转换
我正在使用Jackson objectMapper将JSON转换为对象,进行一些转换并将其转换回JSON 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
{“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需要它。喜欢“假”而不是假