我有类似于下面的 JSON 文档
{
"dell": {
"memory": {
"RAM": {
"RamType": "DDR",
"Size": 16
},
"Graphic": {
"RamType": "GDDR",
"Size": 4,
"dummy": "dummy"
}
},
"dummy": "dummy"
}
}
我想要的是有一个键值对列表,其中键是计算机的名称,值是计算机的属性。同样在这些值中,我可以有多个键值对,如上所示。
我已经用草稿 6 编写了 JSON 模式,如下所示
{
"$schema": "http://json-schema.org/draft-06/schema#",
"properties": {
"computers": {
"patternProperties": {
"additionalProperties": false,
"^[a-z0-9-_]+$": {
"properties": {
"memory": {
"patternProperties": {
"^[a-z0-9-_]+$": {
"additionalProperties": false,
"properties": {
"RamType": {
"type": "string",
"RamSize": {
"type": "number"
}
}
}
}
}
}
}
}
}
}
}
}
你可以在这里试一试。
问题是我不想让用户输入“虚拟”值,如上面给出的 JSON 所示。显然"additionalProperties" : true
是行不通的。我能做什么?
您的主要问题是您的架构描述了您的数据没有的名为“计算机”的顶级属性。因此,您正在测试的任何数据都不会受到您的架构的限制。另一个问题是您的正则表达式与大写字符不匹配。
{
"$schema": "http://json-schema.org/draft-06/schema#",
"patternProperties": {
"^[a-zA-Z0-9-_]+$": {
"additionalProperties": false,
"properties": {
"memory": {
"patternProperties": {
"^[a-zA-Z0-9-_]+$": {
"additionalProperties": false,
"properties": {
"RamType": { "type": "string" },
"Size": { "type": "number" }
}
}
}
}
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句