JSON 模式验证器。验证数字中的最大位数

问题描述 投票:0回答:1

有什么方法可以验证 JSON 模式验证器中的数字位数(https://mvnrepository.com/artifact/com.networknt/json-schema-validator)。

我的电话号码最多应有 5 位数字,且小数点后位数不超过 3 位。在我的 DTO 中,这个数字是 BigDecimal。我知道使用“multiplyOf”验证器可以实现小数位数。

也许我应该在 JSON Schema Validator lib 中编写自己的验证器来验证最大数字?如果是的话,该怎么做?

json validation json-schema-validator
1个回答
0
投票

您可以使用

exclusiveMaximum
来验证数字。

{
  "type": "number",
  "exclusiveMaximum": 100000,
  "multipleOf": 0.001
}

给出代码

String schemaData = "{\r\n"
                + "  \"type\": \"number\",\r\n"
                + "  \"exclusiveMaximum\": 100000,\r\n"
                + "  \"multipleOf\": 0.001\r\n"
                + "}";
JsonSchema schema = JsonSchemaFactory.getInstance(VersionFlag.V202012).getSchema(schemaData);
System.out.println(schema.validate("99999.999", InputFormat.JSON));
System.out.println(schema.validate("100000", InputFormat.JSON));
System.out.println(schema.validate("99999.0001", InputFormat.JSON));

输出是

[]
[$: must have an exclusive maximum value of 100000]
[$: must be multiple of 0.001]
© www.soinside.com 2019 - 2024. All rights reserved.