如何通过创建元模式来限制json模式中的属性

时间:2019-07-29 05:55:55

标签: json validation jsonschema

在一个我正在使用的解决方案中,最终用户将在此处创建自己的数据模型和方案以验证数据。由于Json模式元模式非常宽松,因此我想制作一个更严格的元数据模式来验证最终用户的模式。因此,最终用户将无法在数字类型上设置maxLength。

我查看了文档和规范,但无法正常工作。我不知道我是否应该使用AdditionalProperties或patternProperties 或只是属性本身上的一个简单[]。

{
  "$schema": "http://Myschema.nl/draft-01/schema#",
  "$id": "http://Myschema.nl/draft-01/schema#",
  "title": "Core schema meta-schema",
  "definitions": {
    "numberproperty" : {
        "type" : "number",
        "properties" : { "minimum": { "type": "number"}   },
         "required" : ["minimum"]
    },
    "schemaArray": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#"
      }
    },
    "nonNegativeInteger": {
      "type": "integer",
      "minimum": 0
    },
    "nonNegativeIntegerDefault0": {
      "allOf": [
        {
          "$ref": "#/definitions/nonNegativeInteger"
        },
        {
          "default": 0
        }
      ]
    },
    "simpleTypes": {
      "enum": [
        "array",
        "boolean",
        "integer",
        "null",
        "number",
        "object",
        "string"
      ]
    },
    "stringArray": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "uniqueItems": true,
      "default": []
    }
  },
 "required" : ["$id"],
 "properties": {
   "properties": {
     "oneOf" : [
       {"$ref": "#/definitions/numberproperty"}
     ]
   }
 },
 "default": true
}

但是这将失败,因为要验证的架构中定义的属性是一个对象...所以我需要在两者之间还有一层...我想


{
  "$id": "http://Myschema.nl/draft-01/schema",
  "$schema": "http://Myschema.nl/draft-01/schema#",
  "title": "EndUserSchemaDefinition",
  "type": "number",
  "properties": {
    "myNewNumberProperty": {
      "type": "number",
      "maximum": 2,
      "minimum": 2
    }
  }
}

所以失败了,因为它是一个对象而不是数字类型...

0 个答案:

没有答案