如何使用 JSON 架构在数组中制作所需的项目?
How to make items required in an array using JSON Schema?
我有一个字符串数组,但我不知道是否可以为它设置必需项。
对于“type”:“object”,它可以设置“required”来使项目成为必需的,但我不知道如何设置字符串数组。
这是我的 json 示例:
{
"sets": ["B", "A", "C", "_A", "Y", "_B"]
}
需要“A”、“B”、“C”,
"X", "Y", "Z" 可选,
任何以“_”开头的项目也是可选的,
所有项目都是独一无二的。
拒绝所有其他不符合此规则的项目。
这是我的 json 架构,但我不知道如何为这个数组设置必需的项目。
{
"type": "object",
"properties": {
"sets": {
"type": "array",
"items": {
"type": "string",
"oneOf": [
{"enum": ["A", "B", "C", "X", "Y", "Z"]},
{"pattern": "^_"}
]
},
"uniqueItems": true
}
}
}
希望你能看懂我的英文,如果你需要更多信息或更好的标题,请告诉我,谢谢!
这是一个非常有趣且复杂的需求,但有一个解决方案。它有一些重复,但我不确定是否有替代方法。
您需要确保 A、B 和 C 在数组中...
"allOf": [
{ "contains": { "const": "A" } },
{ "contains": { "const": "B" } },
{ "contains": { "const": "C" } }
],
这是您唯一遗漏的部分。
contains 关键字确保数组包含一个根据子模式有效的项目。位置不重要。
这是完整的架构和演示:https://jsonschema.dev/s/jVSAG
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"properties": {
"sets": {
"type": "array",
"allOf": [
{ "contains": { "const": "A" } },
{ "contains": { "const": "B" } },
{ "contains": { "const": "C" } }
],
"items": {
"oneOf": [
{ "enum": ["A", "B", "C", "X", "Y", "Z"] },
{ "pattern": "^_" }
]
},
"uniqueItems": true
}
}
}
我有一个字符串数组,但我不知道是否可以为它设置必需项。
对于“type”:“object”,它可以设置“required”来使项目成为必需的,但我不知道如何设置字符串数组。
这是我的 json 示例:
{
"sets": ["B", "A", "C", "_A", "Y", "_B"]
}
需要“A”、“B”、“C”,
"X", "Y", "Z" 可选,
任何以“_”开头的项目也是可选的,
所有项目都是独一无二的。
拒绝所有其他不符合此规则的项目。
这是我的 json 架构,但我不知道如何为这个数组设置必需的项目。
{
"type": "object",
"properties": {
"sets": {
"type": "array",
"items": {
"type": "string",
"oneOf": [
{"enum": ["A", "B", "C", "X", "Y", "Z"]},
{"pattern": "^_"}
]
},
"uniqueItems": true
}
}
}
希望你能看懂我的英文,如果你需要更多信息或更好的标题,请告诉我,谢谢!
这是一个非常有趣且复杂的需求,但有一个解决方案。它有一些重复,但我不确定是否有替代方法。
您需要确保 A、B 和 C 在数组中...
"allOf": [
{ "contains": { "const": "A" } },
{ "contains": { "const": "B" } },
{ "contains": { "const": "C" } }
],
这是您唯一遗漏的部分。 contains 关键字确保数组包含一个根据子模式有效的项目。位置不重要。
这是完整的架构和演示:https://jsonschema.dev/s/jVSAG
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"properties": {
"sets": {
"type": "array",
"allOf": [
{ "contains": { "const": "A" } },
{ "contains": { "const": "B" } },
{ "contains": { "const": "C" } }
],
"items": {
"oneOf": [
{ "enum": ["A", "B", "C", "X", "Y", "Z"] },
{ "pattern": "^_" }
]
},
"uniqueItems": true
}
}
}