Java 使用Jackson JSON解析将TRUE或FALSE转换为布尔值
我正在使用Jackson注释将JSON响应解析为POJO对象。我在POJO中使用布尔变量映射来自JSON的值“true”和“false”。但突然之间,我们在JSON中得到了“TRUE”和“FALSE”两个值,并且解析这些值失败。Java 使用Jackson JSON解析将TRUE或FALSE转换为布尔值,java,json,Java,Json,我正在使用Jackson注释将JSON响应解析为POJO对象。我在POJO中使用布尔变量映射来自JSON的值“true”和“false”。但突然之间,我们在JSON中得到了“TRUE”和“FALSE”两个值,并且解析这些值失败。 有谁能建议一种将它映射到布尔值的方法吗?因为这个变量在很多地方使用,我不想将逻辑更改为字符串或布尔值。我不确定这是您想要的。 但它是有效的 Boolean param = Boolean.parseBoolean((String)yourValue); 测试代码是 p
有谁能建议一种将它映射到布尔值的方法吗?因为这个变量在很多地方使用,我不想将逻辑更改为字符串或布尔值。我不确定这是您想要的。 但它是有效的
Boolean param = Boolean.parseBoolean((String)yourValue);
测试代码是
public class program10 {
public static void main(String args[]) {
String yourValue = "TRUE"; // This is what you get from json.
Boolean param = Boolean.parseBoolean((String)yourValue);
if(param == true)
System.out.println("Value is true");
else
System.out.println("Value is false");
System.out.println(param);
}
}
我在使用Jackson解析器1.8.5时也遇到了类似的问题。 JavaPOJO到JSON有效,但返回JavaPOJO的JSON无效。 在JavaPOJO中,如果布尔变量声明为
private Boolean isMyVar;
然后,Jackson生成等效的JSON作为
{..,
"myVar" : false,
..
}
(我知道布尔变量的命名在这里是错误的,但是JAR是第三方,并且说您不能更改它!)
我认为这是Jackson解析器处理布尔值的方式的问题。
我将JSON从“myVar”:false更改为“isMyVar”:false,从JSON创建回JavaPOJO工作正常
有人知道这是否仍然是一个bug或者已经解决了吗?这不是一个真正的问题,这基本上就是BeanUtils的工作方式 对于
boolean
vars,Jackson从setter名称中删除is
,以派生出在编组为JSON时预期的变量名称,并将set
添加到该派生名称中,以解组回POJO
所以boolean是footrue当编组为JSON时,code>以fooTrue
结束,当解组时,它将尝试调用setIsFooTrue()代码>,这是不正确的
如果您使用的是IDE,并且生成了getter/setter,那么您可能会注意到为boolean生成的代码是foo
基本上忽略了is
,就好像var名称只是foo
:
private boolean isFoo;
public boolean isFoo() {
return isFoo;
}
public void setFoo(boolean isFoo) {
this.isFoo= isFoo;
}
两个选项是从var名称中删除is
,或将is
添加到setter名称中 我仍然在1.9.2中讨论这个问题。