对于FasterxmlJackson自动将非布尔值转换为布尔值感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解非布尔类型的表达式怎么解决,并且为您提供关于java–使用JacksonJSON
对于Fasterxml Jackson自动将非布尔值转换为布尔值感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解非布尔类型的表达式怎么解决,并且为您提供关于java – 使用Jackson JSON解析将TRUE或FALSE转换为布尔值、java – 使用Spring将布尔bean创建转换为布尔值、java – 将两个布尔值转换为int、javascript 值转换为布尔值的宝贵知识。
本文目录一览:- Fasterxml Jackson自动将非布尔值转换为布尔值(非布尔类型的表达式怎么解决)
- java – 使用Jackson JSON解析将TRUE或FALSE转换为布尔值
- java – 使用Spring将布尔bean创建转换为布尔值
- java – 将两个布尔值转换为int
- javascript 值转换为布尔值
Fasterxml Jackson自动将非布尔值转换为布尔值(非布尔类型的表达式怎么解决)
我有一个pojo类,其中标志之一isControl
是Boolean类型。
当此属性获取非布尔值(不是true or
false
fastxml时)时,杰克逊会自动将输入值转换为true
。调试了几个小时后,我发现这是在setter方法中发生的setIsControl
。
如果此属性的输入值为非布尔值,我想传递自定义消息。我已经编写了自己的注释来验证此属性的输入值,并返回自定义消息(如果它不是布尔值,但是杰克逊在检查自定义验证器之前将其绑定)。
使用杰克逊版本>>> 2.6.3
。任何帮助将不胜感激。
Control.java
@JsonProperty(required = true)
@NotNull(message = "isControl cannot be null")
private Boolean isControl;
public Boolean getIsControl() {
return isControl;
}
@CheckBoolean(fieldName = "isControl")
public void setIsControl(Boolean isControl) {
this.isControl = isControl;
}
public class BooleanValidator implements ConstraintValidator<CheckBoolean,Boolean> {
private String fieldName;
@Override
public void initialize(CheckBoolean constraintAnnotation) {
this.fieldName = constraintAnnotation.fieldName();
}
@Override
public boolean isValid(Boolean value,ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate(
String.format("The control flag %s should be either true or false",fieldName))
.addConstraintViolation();
if (value != null) {
boolean isBoolean;
if (value instanceof Boolean) {
isBoolean = ((Boolean)value).booleanValue();
System.out.println("var isBoolean: " +isBoolean);
return true;
} else if (value instanceof Boolean && Boolean.FALSE.equals(value)) {
isBoolean = ((Boolean)value).booleanValue();
return true;
} else {
return false;
}
}
return false;
}
}
例外:
java – 使用Jackson JSON解析将TRUE或FALSE转换为布尔值
任何人都可以建议将它映射到布尔值的方法,因为这个变量被用在很多地方,我不想将逻辑更改为String到Boolean.
解决方法
对于布尔变量,Jackson删除了来自setter名称,以便在编组到JSON时派生它所期望的变量名称,并将set添加到相同的派生名称以解组回POJO.
所以boolean isFooTrue;当编组到JSON时结束为fooTrue,当解组它时会尝试调用setIsFooTrue();,这是不正确的.
如果您正在使用IDE并且生成了getter / setter,那么您可能会注意到生成的boolean isFoo代码;基本上忽略了就好像var名称只是foo:
private boolean isFoo; public boolean isFoo() { return isFoo; } public void setFoo(boolean isFoo) { this.isFoo= isFoo; }
有两个选项是从var名称中删除is,或者将is添加到setter名称.
java – 使用Spring将布尔bean创建转换为布尔值
所以,我在我的一个java文件中有这样的东西:
@Resource(name = "initializationCache")
Boolean initializationCache;
在配置文件中,我有这个:
java.lang.Boolean">
我将如何使用原始布尔值来完成这项工作?
最佳答案
我想一种方法是声明一个布尔类型的setter,并让它将值赋给布尔类型的字段,即
boolean initializationCache;
@Resource(name = "initializationCache")
public void setinitializationCache(Boolean b) {
this.initializationCache = b;
}
我没有测试过它.
java – 将两个布尔值转换为int
如果我有两个布尔值a和b,我怎样才能获得等效的“二进制”数字?
false and false = 0 false and true = 1 true and false = 2 true and true = 3
解决方法
(left ? 2 : 0) + (right ? 1 : 0);
不确定java是否处理像C这样的布尔值,但如果是的话:
2*left+right;
javascript 值转换为布尔值
任意javascript 的值都可以转换为布尔值。
特别是在 if() 等判断中使用的时候:
下面这些值会被转换为 false
undefined , null , 0 , -0 , NaN , "" 空字符串
null 和 undefined 往往可以互换, null == undefined 为 true
null === undefined 为 false
来自 JavaScript 权威指南 书籍
这样以后就可以大胆使用 if(xxx) 进行控制了
今天的关于Fasterxml Jackson自动将非布尔值转换为布尔值和非布尔类型的表达式怎么解决的分享已经结束,谢谢您的关注,如果想了解更多关于java – 使用Jackson JSON解析将TRUE或FALSE转换为布尔值、java – 使用Spring将布尔bean创建转换为布尔值、java – 将两个布尔值转换为int、javascript 值转换为布尔值的相关知识,请在本站进行查询。
本文标签: