gpt4 book ai didi

arrays - 基于属性值的条件 Json 模式验证

转载 作者:行者123 更新时间:2023-12-02 11:49:40 25 4
gpt4 key购买 nike

我的输入 json 如下所示,

{
"results": [
{
"name": "A",
"testA": "testAValue"
}
]
}

条件是,如果“name”的值为“A”,则“testA”应为必填字段,如果“name”的值为“B”,则“testB”应为必填字段。

这是我尝试过的 Json 架构,但它没有按预期工作,

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"oneOf": [
{
"$ref": "#/definitions/person"
},
{
"$ref": "#/definitions/company"
}
]
}
},
"definitions": {
"person": {
"type": "object",
"required": [
"name",
"testA"
],
"properties": {
"name": {
"type": "string",
"enum": [
"A"
]
},
"testA": {
"type": "string"
}
}
},
"company": {
"type": "object",
"required": [
"name",
"testB"
],
"properties": {
"name": {
"type": "string",
"enum": [
"B"
]
},
"testB": {
"type": "string"
}
}
}
}
}

也尝试过在 JSON 架构中使用“dependecies”,但无法找到正确的解决方案。

任何使用示例 JSON 架构来实现上述用例的帮助/解决方法都值得赞赏。

最佳答案

你已经很接近了。您的 oneOf 需要位于 items 关键字中。

{
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/person" },
{ "$ref": "#/definitions/company" }
]
}
}

关于arrays - 基于属性值的条件 Json 模式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com