简短的回答是否定的,JSON Schema 不知道如何表达这个约束。你确实有几个选择。
选项1:contentMediaType
contentMediaType
和关键字曾经是 JSON Hyper-Schema 规范的contentEncoding
一部分,但在 Draft-07 中被移至 JSON Schema 验证规范。这些关键字用于将非 JSON 内容描述为字符串。但是,我看不出为什么你不能用它来将 JSON 数据描述为字符串。这只是部分解决方案,因为它只强制字符串是 JSON 而不是 JSON 数组。此外,您可能很难找到支持此功能的验证器(部分是因为它是新的,部分是因为它是一个不常见的用例)
{
"type": "string",
"contentEncoding": "utf-8",
"contentMediaType": "application/json"
}
http://json-schema.org/latest/json-schema-validation.html#rfc.section.8
选项 2:自定义format
一些验证器允许您为format
关键字定义自定义格式。这样做的缺点是您与特定的实现相关联。
{
"type": "string",
"format": "json-array"
}
选项 3:pattern
我什至不确定这是否可行,但您可以尝试提出一个与您正在寻找的 JSON 结构相匹配的正则表达式。
{
"type": "string",
"pattern": "... some god awful regex that probably won't work anyway ..."
}