gpt4 book ai didi

json - 为两个几乎相同的实例定义一个 JSON 模式

转载 作者:行者123 更新时间:2023-12-05 04:14:45 26 4
gpt4 key购买 nike

我有 2 个非常相似的 JSON 对象:

{
"a": "a",
"b": "b",
"c": "c",
"attr1": []
}

{
"a": "a",
"b": "b",
"c": "c",
"attr2": []
}

是否有可能在 v4 草案中为这两种情况定义一个模式?

更新:两个 JSON 实例都不允许使用其他属性。

谢谢

最佳答案

是的,您可以使用 oneOf 关键字来接受 attr1attr2 或使用 anyOf 关键字(如果两者都可以)出席。例如:

{
"type":"object",
"properties" : {
"a" : {
"type" : "string"
},
"b" : {
"type" : "string"
},
"c" : {
"type" : "string"
}
},
"oneOf" : [{
"properties" : {
"attr1" : {
"type" : "array"
}
},
"required":["attr1"]
}, {
"properties" : {
"attr2" : {
"type" : "object"
}
},
"required":["attr2"]
}
]
}

请看official docs审查所有可能性。

正如@Jason 在评论中所建议的,如果您还想禁止其他属性,您只需将 attr1attr2 放在顶层:

{
"type" : "object",
"properties" : {
"a" : {
"type" : "string"
},
"b" : {
"type" : "string"
},
"c" : {
"type" : "string"
},
"attr1" : {
"type" : "array"
},
"attr2" : {
"type" : "object"
}

},
"additionalProperties" : false,
"oneOf" : [{

"required" : ["attr1"]
}, {

"required" : ["attr2"]
}
]
}

关于json - 为两个几乎相同的实例定义一个 JSON 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318610/

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