任何方式接受任何类型的架构

时间:2016-09-01 17:59:38

标签: json jsonschema

我有这个架构,我只期待1'任何'下面的dataRecord属性中的schema。我也期望dataRecord属性应该只保存模式。此时我们只有2个子模式,我们在dataRecord属性中引用它们。在未来,我们期望更多的模式添加,例如test2,test3等。我想避免编辑以下架构以向dataRecord属性添加更多$ ref。有没有办法实现这一点,而无需添加更多对dataRecord属性的引用,同时确保始终提供1个架构。任何帮助将不胜感激。

{
 "id": "http://anysiteaddress",
 "type": "object",
 "properties": {
 "recordId": {
  "type": "string"
},
"dbOperationType": {
  "type": "string"
},
"schema": {
  "type": "string"
},
"schemaVersion": {
  "type": "string"
},
"utcTimeStamp": {
  "type": "string"
},
"dataRecord": {
  "oneOf" : [
    { "$ref": "test.json#/definitions/test"},
    { "$ref": "test1.json#/definitions/test1"}
    ]
}
},
"additionalProperties": false,
"required": [
"recordId",
"dbOperationType",
"schema",
"schemaVersion",
"utcTimeStamp",
"dataRecord"
 ]
 }

1 个答案:

答案 0 :(得分:0)

听起来你想要的是能够引用目录并让oneOf包含在该目录中找到的每个模式。这不是您可以使用JSON Schema执行的操作。您将不得不修改某些内容以添加新架构。

您可以为dataRecord创建其他架构,并让您的架构引用该新架构。然后,在添加新架构时,您的架构不需要更改,但您必须改为更改dataRecord架构。

您的另一个选择是在服务之前在代码中生成此部分模式。根据您打算如何使用此架构,这可能是也可能不是一个好的选择。

相关问题