如何在JSON模式中定义具有可验证名称的对象?
我想为这个JSON伪代码示例创建一个JSON模式:如何在JSON模式中定义具有可验证名称的对象?,json,enums,jsonschema,Json,Enums,Jsonschema,我想为这个JSON伪代码示例创建一个JSON模式: { "xyz": { "$something": { "property_a": "...", "property_b": "...", "property_c": "..." } } } $something可以是以下字符串之一:foo、bar或buz。我当前的架构如下所示: { "xyz": { "id":
{
"xyz": {
"$something": {
"property_a": "...",
"property_b": "...",
"property_c": "..."
}
}
}
$something可以是以下字符串之一:foo、bar或buz。我当前的架构如下所示:
{
"xyz": {
"id": "xyz",
"type": "object",
"properties": {
"foo": {
"id": "foo",
"type": "object",
"additionalProperties": false,
"required": ["property_a"],
"properties": {
"property_a": {
"id": "property_a",
"type": "string"
},
"property_b": {
"id": "property_b",
"type": "string"
},
"property_c": {
"id": "property_a",
"type": "string"
}
}
},
"bar": {
... copy&paste foo
},
"buz": {
... copy&paste foo
}
}
}
}
这是可行的,但有很多重复的代码。所以我正在寻找一种更优雅的方法来实现它
如何在JSON模式中定义允许作为属性名称的枚举值列表?模式属性与属性类似,只是对象的键是正则表达式
一个来自
在本例中,名称以
前缀S_u必须是字符串,任何带有前缀I_u的字符串都必须是字符串
整数。在properties关键字中明确定义的任何属性
也接受,以及任何不匹配的附加属性
任何一个正则表达式都是禁止的
你看过参考资料了吗?谢谢你的评论!oneOf、anyOf等适用于关键字的值。我试图实现的是生成关键变量。这看起来像jsonapi。这里有一个很好的示例,说明您可能正在尝试执行的操作:。我使用该模式来验证我的所有资源,它使用引用来检查响应的形状。除了已知值之外,它似乎还使用图案属性定义变量值。您看过图案属性了吗?它不是枚举,但可以在正则表达式中创建列表。或者你还想要什么?=]@是的,这正是我想要的。非常感谢。
{
"type": "object",
"patternProperties": {
"^S_": { "type": "string" },
"^I_": { "type": "integer" }
},
"additionalProperties": false
}