【问题标题】:How to validate object values in jsonschema?如何验证 jsonschema 中的对象值?
【发布时间】:2021-12-07 00:16:59
【问题描述】:

假设我有一个这样的 json:

{"1": {"first_name": "a", "last_name": "b"},
 "2": {"first_name": "c", "last_name": "d"}}

如您所见,值具有这样的架构:

{"type": "object",
 "properties": {
    "first_name": {"type": "string"},
    "last_name": {"type": "string"}
  },
  "additionalProperties": false,
  "required": ["first_name", "last_name"]}

我想知道如何定义可以验证上述 json 的架构?

【问题讨论】:

    标签: jsonschema json-schema-validator


    【解决方案1】:

    additionalProperties 采用 JSON 模式作为其值。 (是的,布尔值是有效的 JSON Schema!)

    让我们回顾一下 additionalProperties 关键字的作用...

    此关键字的行为取决于存在和注释 “properties”和“patternProperties”在同一模式中的结果 目的。使用“additionalProperties”进行验证仅适用于 未出现在注释中的实例名称的子值 “properties”或“patternProperties”的结果。

    对于所有此类属性,如果子实例验证成功 根据“additionalProperties”架构进行验证。

    https://json-schema.org/draft/2020-12/json-schema-core.html#additionalProperties

    简单来说,如果您不在同一架构对象中使用propertiespatternProperties,则additionalProperties 的值架构适用于您的实例中适用对象的所有值。

    因此,您只需按如下方式嵌套现有架构。

    {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "additionalProperties": YOUR SCHEMA
    }
    

    【讨论】:

    • 它有效。非常感谢。
    猜你喜欢
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多