json-schema:获取附加属性列表?

json-schema : Get a list of additionalProperties?

是否可以获得 json-schema 找到的所有 additionalProperties 的列表?

例如,如果我的架构如下所示:

{
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string",
    },
    "lastName": {
      "type": "string",
    },
    "age": {
      "type": "integer"
    }
  }
}

数据看起来像这样:

{
  "firstName": "John",
  "lastName": "Doe",
  "age": 21,
  "extraField": "some new data I was not expecting",
  "anotherExtraField": "another unexpected data point"
}

在这种情况下,我想要 return 中的列表,而不是 json-schema 中的异常,因为 additionalProperties: false,例如:[extraField, anotherExtraField]

如果您使用的实现支持带注释的 2019-09 或 2020-12,那么您很幸运! additionalProperties 应生成其验证的属性的注释结果 (spec)。

如果添加additionalProperties: true,那么所有额外的属性都会通过并由关键字验证,这意味着这些额外的属性应该列在注释结果中。

{
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "age": {
      "type": "integer"
    }
  },
  "additionalProperties": true
}

这会产生(Detailed 输出格式)

{
  "valid": true,
  "keywordLocation": "#",
  "instanceLocation": "#",
  "annotations": [
    {
      "valid": true,
      "keywordLocation": "#/properties",
      "instanceLocation": "#",
      "annotation": [
        "firstName",
        "lastName",
        "age"
      ]
    },
    {
      "valid": true,
      "keywordLocation": "#/additionalProperties",
      "instanceLocation": "#",
      "annotation": [
        "extraField",
        "anotherExtraField"
      ]
    }
  ]
}

您可以在 https://json-everything.net, which is powered by my validator, JsonSchema.Net 上试用。

如果您不使用 .Net,可以浏览 implementations page 以查找其他库。其中一些可能还支持注释,但我不确定哪个支持。