十进制 json 模式的模式验证

pattern validation for decimal json schema

我们需要在 JSON 架构中为数字格式匹配以下场景。

该数字应仅接受小数格式,如 5.0/5.1,不应接受整数格式,如 4/5/6。

该数字不应接受超过 11 位小数(例如 5.111111111111 应抛出错误,因为它有 12 位小数,但应接受 5.111,因为它有 3 位小数)

我尝试了以下 JSON 架构,但它不起作用

"myscore": {
        "type": "number",
        "multipleOf": 0.00000000001,
        "not": {
            "multipleOf": 1
        }
    }

执行此操作的唯一方法是将数字作为字符串发送并使用正则表达式对其进行验证。

Mathematical Integers

Some programming languages and parsers use different internal representations for floating point numbers than they do for integers.

For consistency, integer JSON numbers SHOULD NOT be encoded with a fractional part.

http://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.6.3

如果您特别想存储 5.0,您将存储一个字符串,因为就数字而言,它等同于 5