【问题标题】:Can I set exact value in a JSON Schema?我可以在 JSON 模式中设置确切的值吗?
【发布时间】:2016-11-16 09:44:53
【问题描述】:

我使用JSON Schema 来针对某些架构验证应用对象以进行测试。

我发现我可以为属性设置 minimummaximum 值:

"responseCode": {
        "type": "integer",
        "minimum": 100,
        "maximum": 500
    }

但我找不到是否可以设置确切的所需值,例如"value":123

是否可以将其设置为我需要验证的内容?

【问题讨论】:

  • 我不确定这是否可取,但您可以尝试设置最小值 = 最大值 = 123。
  • 它有效,但相当冗长。

标签: json jsonschema


【解决方案1】:

你可以:

{ "enum": [123] }

{ "const": 123 }

const 现在是JSON schema specification 的draft-06 的一部分(由Ajv 和其他一些验证器支持)。

【讨论】:

    【解决方案2】:

    已经提到,但我知道的 2 个选项是:

    { "enum": [123] }
    

    { "const": 123 }
    

    我的来源是: https://json-schema.org/understanding-json-schema/reference/generic.html

    继续努力!

    【讨论】:

    • 我相信你下次会表现出色。
    【解决方案3】:

    如果有人想知道如何指定字符串值而不是数字,尤其是在使用 JSON Schema Draft-04 的 AWS API Gateway 中,您可以使用正则表达式:

    {
        "type": "string",
        "pattern": "MyStringOrOtherRegex"
    }
    

    https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00#section-3.3

    【讨论】:

    • 这不是必需的。 enumconst 适用于字符串(以及任何其他类型)。此外,如果您这样做,请确保使用^$ 锚定您的正则表达式。否则"pattern": "a" 之类的内容将匹配“cat”。
    • 这是对的一半。 “const”关键字在 Draft-04 中似乎不可用(AWS 不会接受它)。
    • 我的意思是const 可以处理字符串。我并不是要暗示const 在draft-04 中工作。但是,我写它的方式确实令人困惑。感谢您指出这一点。
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多