gpt4 book ai didi

用于验证 key 是否存在的 JSON 模式 "oneOf"

转载 作者:行者123 更新时间:2023-12-01 12:20:37 24 4
gpt4 key购买 nike

我正在尝试创建一个 JSON 架构,以针对具有大部分相同属性但仅在少数属性上不同的多个不同实体进行验证。

{
"firstname": "Bat",
"lastname": "man",
"email": "batman@gmail.com"
}

{
"firstname": "Super",
"lastname": "man",
"phone": "543-453-4523"
}

{
"firstname": "Wonderwo",
"lastname": "man",
"email": "wonderwoman@gmail.com"
}

基本上,我想创建一个模式,确保姓氏是 "man" 并且具有 phoneemail 属性.

我尝试使用 oneOf 来实现它,如下所示:

{
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string",
"pattern": "man"
},
"oneOf": [{
"email": {
"type": "string"
},
"phone": {
"type": "string"
}
}]
}
}

但我认为这行不通。对于 JSON 模式,这样的事情甚至可能吗?我怎样才能做到这一点?

最佳答案

你有几个问题:

  1. “oneOf”是关键字,不能在属性中使用。
  2. “oneOf”中的项目应该是模式,你那里没有。
  3. “anyOf”几乎总是比“oneOf”好,除非你真的需要一个排他性的“OR”
  4. “pattern”在这里是一个错误的关键字,您需要“enum”(或 draft-06 “const”)

你需要:

{
"type": "object",
"required": ["firstname", "lastname"],
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string",
"enum": ["man"]
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
}
},
"anyOf": [
{ "required": ["email"] },
{ "required": ["phone"] }
]
}

关于用于验证 key 是否存在的 JSON 模式 "oneOf",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485576/

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