json - 对必需但未知的键名进行 JSON 模式验证
问题描述
我想验证此响应的架构:
{
"738": [
{
"appId": 413126,
"appName": "xyz1",
"releaseId": 7113,
"releaseHash": "abcde",
"major": 2,
"minor": 12,
"patch": 0,
"latest": false,
"tracks": []
},
{
"appId": 412806,
"appName": "xyz2",
"releaseId": 8838,
"releaseHash": "fghijk",
"major": 1,
"minor": 0,
"patch": 23,
"latest": false,
"tracks": []
}
]
}
问题是密钥(在本例中为“738”)是动态的(事先不知道名称)并且是必需的。我知道 patternProperties,但我无法让它工作。我正在尝试使用以下验证模式:
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"required": true,
"patternProperties": {
"^.*$": {
"$id": "#",
"type": "array",
"items": {
"$id": "#/items",
"type": "object",
"required": [
"appId",
"appName",
"releaseId",
"releaseHash",
"major",
"minor",
"patch",
"latest",
"tracks"
],
"properties": {
"appId": {
"$id": "#/items/properties/appId",
"type": "number"
},
"appName": {
"$id": "#/items/properties/appName",
"type": "string"
},
"releaseId": {
"$id": "#/items/properties/releaseId",
"type": "number"
},
"releaseHash": {
"$id": "#/items/properties/releaseHash",
"type": "string"
},
"major": {
"$id": "#/items/properties/major",
"type": "number"
},
"minor": {
"$id": "#/items/properties/minor",
"type": "number"
},
"patch": {
"$id": "#/items/properties/patch",
"type": "number"
},
"latest": {
"$id": "#/items/properties/latest",
"type": "boolean"
},
"tracks": {
"$id": "#/items/properties/tracks",
"type": "array"
}
}
}
}
}
}
我得到的错误是:“错误:架构无效:data.required 应该是数组”。我不明白。如果我在开始时删除“”required“:true”,它会顺利进行,但我需要第一个动态键。有什么建议么?
解决方案
推荐阅读
- c# - 代码假装变量不存在
- html - 如何在 Weebly 嵌入代码中更改字体大小?
- javascript - 无法为particle.js div 设置动画
- elasticsearch - 除非您使标准更严格,否则 Elasticsearch MLT 查询不会返回任何结果
- rust - 在 macOS 上编译 Rust 应用程序时,如何解决“找不到 -lgfortran 的库”?
- java - java中toString方法返回值的问题
- selenium - 在 lambda 上调用 screenshot_as_base64 时出错,而 MacOS 正在工作
- excel - Excel VBA webscrape,我如何获得跨度值?
- filesystems - 如何在 dexie.js 中为文件系统建模?
- image - 调整从变焦相机拍摄的图像大小