JSONSchema是一种资源,用于提示其模式

2024-04-18 23:41:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找到获取资源的最佳方法,以某种方式指示应该用来验证它的模式。你知道吗

我需要这个,因为可能有一天我需要返回一个充满不同资源的数组。在这种情况下,我需要数组中的每个资源告诉我应该用什么模式来验证它。你知道吗

最好的方法是什么?你知道吗

我的想法是使用嵌套的JSONSchema,其中外部对象具有资源的名称(例如car):

{
  'type': 'object',
  'properties': {
    'car': {
        {
          'type': 'object',
          'title': 'car',
          'properties': OrderedDict([('id', {
              'type': 'integer'
          })]),
          'required': ['id']
    }
  },
  'required': [
    'car'
  ]
}

然后我可以在资源中清楚地看到应该用哪个模式进行验证:

{
    'car': {
        'id': 1,
    }
}

然后,在需要返回不同资源数组的情况下,可以轻松地正确识别和验证每个资源:

{
    'items': [
        {
            'car': {
                'id': 1,
            }
        },
        {
            'helicopter': {
                'id': 1,
            }
        },
    ]
}

Tags: 对象方法idobjecttype方式模式required
1条回答
网友
1楼 · 发布于 2024-04-18 23:41:02

在JSON模式中处理这样的事情的方法是使用anyOf约束。你知道吗

{
  "type": "array",
  "items": {
    "anyOf": [
      { "$ref": "car.json" },
      { "$ref": "helicopter.json" }
    ]
  }
}

这样,客户机就不需要告诉您要使用什么模式,而是告诉客户机允许使用哪些模式。只要数组中的每个项都匹配其中一个可能的选项,验证就会成功。你知道吗

如果需要更具体地描述数组中的项,可以重新构造模式以隔离类型。你知道吗

相关问题 更多 >