Java-用户在布尔中输入字符串时的验证

时间:2019-07-17 12:50:09

标签: java

当前正在使用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,它将被转换为布尔值,我只是想拒绝所有字符串,以获取更好的错误消息。

2 个答案:

答案 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");
}