如何将复杂的 json 对象与可选的 属性 设置为可选?

How can I set a complex json object with an optional property as optional?

抱歉,如果问题令人困惑。我正在努力了解 jsonschema 验证。我要解决的问题是将 属性 设置为可选。 属性 属于所需对象,而该对象又是复杂类型的 属性。

例如

{ "prop1" : {
              "field1" : {"type" : "string" },
              "field2" : {"type" : "string" }
           },
  "prop2" : { "type" : "string" }
}

如果我想声明 prop1 是必需的,但 prop1.field1 是可选的,我该如何使用 jsonschema 做到这一点?

谢谢, 罗宾

您需要将 "required" 指定为与​​ "properties" 相同的级别。

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "prop1": {
      "type": "object",
      "properties": {
        "field1": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string"
            }
          }
        },
        "field2": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string"
            }
          }
        }
      }
    },
    "prop2": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        }
      }
    }
  },
  "required" : [ "prop1" ]
}

此架构是使用此在线工具生成的(加上一些编辑):

JSON Schema tool