当前位置: 首页 > 面试题库 >

JSON模式:如何检查一个数组是否包含至少一个具有给定值属性的对象?

方玄天
2023-03-14
问题内容

如何检查以下json中数组names中的至少一个元素是否具有nickName具有值的属性Ginny

{
  "names": [
    {
      "firstName": "Hermione",
      "lastName": "Granger"
    }, {
      "firstName": "Harry",
      "lastName": "Potter"
    }, {
      "firstName": "Ron",
      "lastName": "Weasley"
    }, {
      "firstName": "Ginevra",
      "lastName": "Weasley",
      "nickName": "Ginny"
    }
  ]
}

目前,我正在使用06版草案(此处为 FAQ )。

这是我的NOT WORKING模式:

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "title": "Complex Array",
  "description": "Schema to validate the presence and value of an object within an array.",

  "type": "object",
  "properties": {
    "names": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "nickName": {
            "type": "string"
          }
        },
        "anyOf": [
          {"required": ["nickName"]}
        ]
      }
    }
  }
}

问题答案:

我设法用弄清楚了draft-06。在此版本中contains,添加了新的关键字。根据此规范草案:

包含

此关键字的值必须是有效的JSON模式。如果数组实例的至少一个元素对给定架构有效,则该数组实例对“包含”有效。

工作模式:

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "title": "Complex Array",

  "type": "object",
  "properties": {
    "names": {
      "type": "array",
      "minItems": 1,
      "contains": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "nickName": {
            "type": "string",
            "pattern": "^Ginny$"
          }
        },
        "required": ["nickName"]
      },
      "items": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "nickName": {
            "type": "string"
          }
        }
      }
    }
  }
}


 类似资料:
  • 问题内容: 我需要找到属于特定条件的任何组的所有行。 我将一个组定义为在“组”列中共享一个值的几行。 相关组必须包含至少一行且Eligible设置为true的行,并且该组中至少有两行在Group或Eligible之外的任何列中必须彼此不同。 样表 所需结果 以下查询使我接近 问题在于它返回的结果太多,因为没有考虑该组中的记录之一是否被标记为合格。 我可能缺少一些简单的东西,但是我无法弄清楚如何检查

  • 请看do while循环,我认为注释是不言自明的。我想检查该集合是否设置了所有具有符号a、b、c、d的卡片(借助数组或其他任何东西实现它)。

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

  • 我想知道我是否可以定义一个JSON模式(草案4),它至少需要对象的许多属性中的一个。我已经知道、和之一,但就是不知道如何以我想要的方式使用它们。 下面是一些JSON示例来说明:

  • 问题内容: 我想要这样一个验证,即“我的字符串”必须至少包含一个字母。 我正在使用以下内容: 即使在我的字符串中,标志也会给我 问题答案: 您想要的正则表达式是,但是您需要使用方法。 此页面将让您根据输入测试正则表达式。 正则表达式测试页 这里有一个Java正则表达式教程。 Java正则表达式教程

  • 问题内容: 我想为数组中的每个值返回一个布尔值,指示它是否在array中。我猜这应该是一个标准程序,但是我找不到有关如何执行此操作的任何信息。我的尝试如下: 但是,我得到了错误: 我使用的是numpy,因此首选使用numpy或标准Python的解决方案。 问题答案: 我相信您可以使用-