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 以查找其他库。其中一些可能还支持注释,但我不确定哪个支持。
是否可以获得 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 以查找其他库。其中一些可能还支持注释,但我不确定哪个支持。