gpt4 book ai didi

JSON 模式 if/then 需要嵌套对象

转载 作者:行者123 更新时间:2023-12-02 20:06:30 25 4
gpt4 key购买 nike

我有一个 JSON:

{
"i0": {
"j0": {
"a0": true
}
},
"i1": {
"j1": {
"a1": "stuff"
}
}
}

我想要验证: 如果 a0 为 true,则应需要 a1

我的架构当前是:

{
"$schema": "http://json-schema.org/draft-07/schema",
"id": "id",
"type": "object",
"required": [
"i0",
"i1"
],
"allOf": [
{
"if": {
"properties": {
"i0": {
"j0": {
"a0": true
}
}
}
},
"then": {
"properties": {
"i1": {
"j1": {
"required": [
"a1"
]
}
}
}
}
}
]
}

该条件似乎并未实际运行。或者,如果我尝试将 required 与我正在检查的值放在同一级别,我已经看到了非常相似的条件。如:

"allOf": [
{
"if": {
"a0": true
},
"then": {
"required": [
"a1"
]
}
}
]

但这需要 a1a1 一起位于 j0 下。如何根据 j0 下的值要求 j1 下的对象?

最佳答案

试试这个:

{
"if":{
"type":"object",
"properties":{
"i0":{
"type":"object",
"properties":{
"j0":{
"type":"object",
"required":["a0"]
}
},
"required":["j0"]
}
},
"required":["i0"]
},
"then":{
"type":"object",
"properties":{
"i1":{
"type":"object",
"properties":{
"j1":{
"type":"object",
"required":["a1"]
}
},
"required":["j1"]
}
},
"required":["i1"]
}
}

您必须使用 if/then 关键字中的整体结构,从它们具有的任何共同根开始。在这种情况下,它们的路径在 i0/i1 属性处开始 fork ,因此您必须包含从该点开始的整个结构。

type 关键字确保您拥有一个对象,否则架构可能会在其他类型(例如 stringboolean)时通过验证,被使用。

required 关键字确保 if/then 子模式仅匹配实际包含 i0.j0.a0 的对象/i1.j1.a1 分别是属性路径。

此外,a0/`a1 属性的 required 关键字仅指定它们存在。如果需要,您可以向该子模式添加更多验证。

关于JSON 模式 if/then 需要嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54535508/

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