JSON Schema 比较两个属性为等长数组

标签 json jsonschema

我在架构中有两个属性,它们都是数组。我想比较它们的长度相等。

例如:

架构.json

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "thing": {
      "type": "object",
      "properties": {
        "fields": {
          "type": "array",
          "items": {}
        },
        "values": {
          "type": "array",
          "items": {}
        }
      },
      "required": ["fields", "values"]
    }
  }
}

数据.json
{
  "thing": {
    "fields:": ["age", "sex", "location"],
    "values:": [25, "Male", "Cape Town"]
  }
}

我想要比较模式中字段和值的长度相同。我该怎么做?

最佳答案

在 JSON Schema 中,所有验证关键字的范围都限定为它适用的值。换句话说,您无法根据另一个值验证一个值。

如果您以几乎任何其他方式重构此结构,您就不应该有任何问题。

例如,您可以使用 items 的数组形式定义对列表。关键词。

{
  "thing": [
    ["age", 15],
    ["sex", "Male"],
    ["location", "Capetown"]
  ]
}

或者,您可以使用 additionalProperties关键字并使用对象以更自然的方式显示键/值对。
{
  "thing": {
    "age": 15,
    "sex": "Male",
    "location": "Capetown"
  }
}

关于JSON Schema 比较两个属性为等长数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38624299/

相关文章:

android - 我想在我的 String JsonObject 中获取值(value)

java - 在 Java 中将 DynamoDB JSON 文档转换为 JSON 对象

java - 如何从 OpenAPI 3.0 yaml 文件生成 JSON 示例?

rust - 如何将JSON模式作为数据传递给Actix Web?

json - 如何制作 jsonschema 以验证数组中的所有对象?

用于数据描述与数据验证与输入验证的 JSON 模式

python - 重新调整现有的 json 文件

python - 在url中传递一个变量?

jsonschema - 如何限制 JSON 模式中对象键的最大长度

node.js - 为什么 Ajv 在编译期间无法解析引用?