当前位置: 首页 > 知识库问答 >
问题:

如何定义至少需要一个属性的JSON模式

容远
2023-03-14

我想知道我是否可以定义一个JSON模式(草案4),它至少需要对象的许多属性中的一个。我已经知道所有任一之一,但就是不知道如何以我想要的方式使用它们。

下面是一些JSON示例来说明:

// Test Data 1 - Should pass
{

    "email": "hello@example.com",
    "name": "John Doe"
}
// Test Data 2 - Should pass
{
    "id": 1,
    "name": "Jane Doe"
}
// Test Data 3 - Should pass
{
    "id": 1,
    "email": "hello@example.com",
    "name": "John Smith"
}
// Test Data 4 - Should fail, invalid email
{
    "id": 1,
    "email": "thisIsNotAnEmail",
    "name": "John Smith"
}

// Test Data 5 - Should fail, missing one of required properties
{
    "name": "John Doe"
}
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "https://example.com",
    "properties": {
        "name": {
            "type": "string"
        }
    },
    "anyOf": [
        {
            "properties": {
                "email": {
                    "type": "string",
                    "format": "email"
                }
            }
        },
        {
            "properties": {
                "id": {
                    "type": "integer"
                }
            }
        }
    ]
}

共有1个答案

姜煌
2023-03-14

若要至少要求一组属性中的一个,请在一系列Anyof选项中使用Required

{
    "type": "object",
    "anyOf": [
        {"required": ["id"]},
        {"required": ["email"]}
        // any other properties, in a similar way
    ],
    "properties": {
        // Your actual property definitions here
    }
{

如果存在所需的任何属性(“id”“email”),那么它将在Allof中传递相应的选项。

 类似资料:
  • 我有这个OpenAPI模式: 所有属性都是必需的。这是用于<code>PUT/user/profile<code>的。 我会把它改成 。用户发送的参数只是他们只请求更改。系统验证至少需要一个参数。 我如何描述[用户名,电子邮件,描述,个人资料_图标]之一是必需的? 可接受的示例请求: 不可接受的示例(错误): 注释器很接近,但它似乎仅适用于模式,而不是属性。 https://swagger.io/

  • 我想知道我是否可以定义一个JSON模式(草案4),它要求许多属性中至少有一个具有特定的值。 为了说明这一点,下面是一个我希望验证失败的JSON示例: 但是,如果上面的任何(一个或多个)属性设置为,只有这样我才会期望它通过验证。 那么模式是什么呢? 非常感谢提前!

  • 问题内容: 如何检查以下json中数组中的至少一个元素是否具有具有值的属性? 目前,我正在使用06版草案(此处为 FAQ )。 这是我的NOT WORKING模式: 问题答案: 我设法用弄清楚了。在此版本中,添加了新的关键字。根据此规范草案: 包含 此关键字的值必须是有效的JSON模式。如果数组实例的至少一个元素对给定架构有效,则该数组实例对“包含”有效。 工作模式:

  • 我正在编写一个工具来处理Resume.Json文件(项目),并正在创建一个Json模式来验证用户输入。我试图用json.net.schema实现自动化,但是输出总是要求所有属性,不管这些属性是还是属性。 如何让架构生成器遵守属性?

  • 对于JSON: 草案中提出的模式如下 我的问题是JSON本身没有定义它的结构吗?是否需要单独的模式?

  • 我有这个猫鼬帖子模式。 在验证中,类型为,