Python JSONSchema是一种提示其模式的资源

Python JSONSchema是一种提示其模式的资源,python,jsonschema,Python,Jsonschema,我试图找到获取资源的最佳方法,以某种方式指示应该用于验证它的模式 我需要这个,因为可能有一天我需要返回一个充满不同资源的数组。在这种情况下,我需要数组中的每个资源告诉我应该用什么模式来验证它 最好的方法是什么 我的想法是使用嵌套的JSONSchema,其中外部对象具有资源的名称(例如car): 然后,我可以在资源中清楚地看到应该使用哪个模式进行验证: { 'car': { 'id': 1, } } 然后,在需要返回不同资源数组的情况下,可以轻松地正确识别和验证每

我试图找到获取资源的最佳方法,以某种方式指示应该用于验证它的模式

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

最好的方法是什么

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

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

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

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

在JSON模式中处理类似内容的方法是使用
anyOf
约束

{
  "type": "array",
  "items": {
    "anyOf": [
      { "$ref": "car.json" },
      { "$ref": "helicopter.json" }
    ]
  }
}
这样,客户机就不需要告诉您要使用什么模式,而是告诉客户机允许使用哪些模式。只要数组中的每个项都匹配一个可能的选项,验证就会成功


如果需要更具体地说明数组中的项,可以重新构造架构以隔离类型。

为什么需要客户端验证它们?在服务器端验证它们,如果无法发送有效的对象,则会返回一个错误。问题是,如果服务器从客户端接收到对象数组,它如何知道要使用哪些架构来验证列表中的每个资源?这似乎是一个不错的解决方案,谢谢Jason。我会等一会儿再把这个标记为我的答案,以防另一个答案出现。
{
  "type": "array",
  "items": {
    "anyOf": [
      { "$ref": "car.json" },
      { "$ref": "helicopter.json" }
    ]
  }
}