Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSONSchema验证数组项_Json_Jsonschema - Fatal编程技术网

JSONSchema验证数组项

JSONSchema验证数组项,json,jsonschema,Json,Jsonschema,我在JSON数组中接收以下项目 {locations: [{locId: "1", locName: "ST1"}, {locId: "2", locName: "ST2"}, {locId: "3", locName: "ST3"}]} 我的要求是在位置内locName的值必须是ST1、ST2或ST3(我不关心locId)。我如何在JSONSchema中实施这一点。我看到您可以使用数组,但如何指定数组的对象\项应具有特定属性的预定义值之一。您可以使用关键字限制给定属性的允许值: "locNa

我在JSON数组中接收以下项目

{locations: [{locId: "1", locName: "ST1"}, {locId: "2", locName: "ST2"}, {locId: "3", locName: "ST3"}]}
我的要求是在
位置
locName
的值必须是
ST1
ST2
ST3
(我不关心
locId
)。我如何在JSONSchema中实施这一点。我看到您可以使用
数组
,但如何指定数组的对象\项应具有特定属性的预定义值之一。

您可以使用关键字限制给定属性的允许值:

"locName": {
  "type": "string",
  "enum": ["ST1", "ST2", "ST3"]
}

完整架构:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "locations": {
      "type": "array",
      "items": [
        {
          "type": "object",
          "properties": {
            "locId": {
              "type": "string"
            },
            "locName": {
              "type": "string",
              "enum": ["ST1", "ST2", "ST3"]
            }
          },
          "required": [
            "locId",
            "locName"
          ]
        },        
      ]
    }
  },
  "required": [
    "locations"
  ]
}