用于可变性的Json Schema模板

用户名

我是刚定义JSON模式并针对该模式验证json的新手。

这是一个示例json,我想为其定义一个json模式模板以进行验证:

{
 "version": "1.0",
 "config": {
   "globalConfig": {
      “ClientNames”: [
        “client1”, “client2”, “client3”
       ]
    },
   “ClientConfigs”: [
       {
          “ClientName”: “client1”,
          “property1”: “some value”,
          “property2”: “some value”
       },
       {
          “ClientName”: “client2”,
          “property1”: “some value”,
          “property2”: “some value”
       },
       {
          “ClientName”: “client3”,
          “property1”: “some value”,
          “property2”: “some value”
       }
    ]
}

据我了解,“ ClientConfigs”将是一个对象数组(例如ClientConfig),其中将包含clientName,property1和property2。这是我认为架构想要的:

{
  "$schema": "http://json-schema.org/draft-01/schema#",
  "title": "ClientConfig",
  "type": "object",
  "description": "Some configuration",
  
  "properties": {
    "version": {
      "type": "string"
    },
    "config": {
      "$ref": "#/definitions/config"
    }
  },
  
  "definitions": {
    "config": {
      "type": "object",
      
      "properties": {
        "globalConfig": {
          "type": "object",
          "description": "Global config for all clients",
          "properties": {
            "ClientNames": {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string"
              }
            }
          }
        },
        "ClientConfigs": {
          "type": "array",
          "description": "List of configs for different clients",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/ClientConfig"
          }
        }
      }
    },
    
    "ClientConfig": {
      "type": "object",
      "properties": {
        "ClientName": {
          "type": "string"
        },
        "property1": {
          "type": "string"
        },
        "property2": {
          "type": "string"
        }
      }
    }
  }
}

我想用jsonschema验证2件事:

  1. ClientConfigs数组的每个元素中的ClientName是“ ClientNames”中的值之一,即“ ClientConfigs”数组中的各个ClientConfig应该仅包含在属性“ ClientNames”中定义的客户端名称。
  2. “ ClientNames”中存在的每个clientName应该定义为“ ClientConfigs”数组中的元素。更准确地说,为“ ClientNames”属性中存在的每个clientName定义ClientConfig。

这是一个根据我的要求无效的示例:

{
 "version": "1.0",
 "config": {
   "globalConfig": {
      “ClientNames”: [
        “client1”, “client2”, “client3”
       ]
    },
   “ClientConfigs”: [
       {
          “ClientName”: “client4”,
          “property1”: “some value”,
          “property2”: “some value”
       }
    ]
}

这是无效的,因为:

  1. 它没有为client1,client2和client3定义ClientConfig。
  2. 它为client4定义了ClientConfig,它不在“ ClientNames”中。

是否可以使用json模式模板进行此类验证?如果是,如何验证相同?

随意的

您无法在JSON模式中引用实例数据。这被认为是业务逻辑,不在JSON Schema的范围之内。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可变性混乱

来自分类Dev

Swift协议的可变性

来自分类Dev

Swift中的可变性

来自分类Dev

导入变量的可变性

来自分类Dev

Nim:参数和可变性的地址

来自分类Dev

Swift中的数组可变性

来自分类Dev

简单的Ruby变量可变性

来自分类Dev

使用内部可变性模式的“ BorrowMutError”

来自分类Dev

实例属性可变性(非常基础)

来自分类Dev

简单的Ruby变量可变性

来自分类Dev

Swift中的数组可变性附加

来自分类Dev

通过对象引用和可变性

来自分类Dev

python中列表的可变性

来自分类Dev

this.key与可变性能

来自分类Dev

Swift 映射函数可变性

来自分类Dev

在python中测试可变性

来自分类Dev

重新设计扩展方法以实现可变性(适用于参考类型)

来自分类Dev

.NET中的值类型,不可变性(良好)和可变性(邪恶)

来自分类Dev

通过间接示例说明C ++可变性

来自分类Dev

如何实现任何可变性的特征?

来自分类Dev

const和操作可变性对C#性能的影响

来自分类Dev

递归算法中Python列表的可变性

来自分类Dev

使用jbcrypt时的可变性能和降级性能

来自分类Dev

字符串不可变性的困惑

来自分类Dev

Java中getter和setter的日期可变性

来自分类Dev

Scala函数式编程和可变性

来自分类Dev

Clojure可变性:O(1)更新向量的性能

来自分类Dev

球拍中核心功能的可变性

来自分类Dev

Python OOP实例和类的可变性