如何在json模式验证中验证枚举值?

y4ekin9u  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(170)

主要的问题在于根据处理数组的模式来验证一个JSON。2那么,如果我放一个不同的值似乎仍然有效?
json模式:

{
  "transactions" : {
    "type" : "array",
    "items" : {
      "type" : "object",
      "properties" : {
        "type" : {
          "type" : "string",
          "enum" : ["BREAK"]
        },
        "required":["type"]
      },
      "required":["items"]
    }
  }
}

输入JSON:

{
  "transactions":[
    {
      "type":"BREAKDDDDDdddddddddddddddddddddddddddJDJDJDJDJDJDJDJ"
    }
  ]
}

result:没有发现错误。2 JSON根据模式进行验证。
这是错误的,因为我们没有定义像"BREAKDDDDD"这样的枚举类型
http://www.jsonschemavalidator.net/
对此有何想法?

snz8szmq

snz8szmq1#

您的JSON架构缺少某些属性。请查看此处提供的有关如何启动架构http://json-schema.org/example1.html的示例。
请将架构更新为下面的模式并尝试

{
  "type": "object",
  "properties": {
    "transactions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": ["BREAK"]
          }
        },
        "required": ["type"]
      }
    }
  }
}
qc6wkl3g

qc6wkl3g2#

要验证JSON架构中的枚举值,我们可以使用enum关键字。enum关键字允许您指定属性的允许值列表。例如,如果您有一个“enum”:[“one”,“two”],这将只允许值“one”,“two”。

{
  "type": "object",
  "properties": {
    "prop": {
      "type": "string",
      "enum": ["one", "two"]
    }
  }
}

相关问题