当前正在使用Web服务并进行验证,当用户在JSON块中输入布尔值时希望获得更好的错误消息:
JSON:
{
"name": "GAWA",
"isFree": true
}
如预期的那样,因为满足布尔值的标准,所以可以正常工作。但是,如果用户输入字符串,就会出现问题。
{
"name": "GAWA",
"isFree": "gwge"
}
当前错误消息:
"message": "Can not deserialize value of type java.lang.Boolean from String \"rwtrt\": only \"true\" or \"false\" recognized\n at [Source: java.io.PushbackInputStream@7e9abd26; line: 14, column: 2] (through reference chain: com.velatt.dartentitlements.dto.SiteDTOExternal[\"useAppEntitlements\"])"
},
我认为这是一条if语句,类似于:
if (isFree ...) {
throw new IllegalArgumentException("Cannot create a person without a valid boolean");
}
我可以提出什么条件的任何帮助?
编辑:我不希望更改它,因此如果他们输入true,它将被转换为布尔值,我只是想拒绝所有字符串,以获取更好的错误消息。
答案 0 :(得分:0)
您需要检查对象isFree
是否是String类的实例。
尝试一下:
if (isFree instanceof String) {
throw new IllegalArgumentException("Cannot create a person without a valid boolean");
}
答案 1 :(得分:0)
它将拒绝除布尔值以外的所有其他数据类型
if (isFree instanceof Boolean == false){
throw new IllegalArgumentException("Cannot create a person without a valid boolean");
}