架构内JSON对象内的JSON定义不是Obeying Enums:Python jsonvalidation

时间:2014-11-06 17:55:09

标签: json validation python-2.7 jsonschema

我正在编写一个vcxproj生成器供我个人使用。这个项目的一部分让我了解JSON模式。下面是我定义的Schema。 (模式后定义的问题)。

    self._schema = {
        'definitions': {

            ...

            'project_settings': {
                'required': ['configuration', 'platform'],

                'type': 'object',
                'properties': {
                    'platform': {
                        'enum': ['x86_64', 'Win32']
                    },
                    'connfiguration': {
                        'enum': ['Release', 'Debug']
                    },

                    ...    

                }
            }
        },

        # Start of actual requirements
        'type': 'object',
        'properties': {
            'project_configurations': {
                'type': 'array',
                'minItems': 1,
                'items': {
                    'allOf': [{'#ref': 'definitions/project_settings'}]
                }
            }
        },
        'additionalProperties': False,
        'required': ['project_configurations'],
    }

我的问题在于#definitions/project_settings/configuration#definitions/project_settings/platform。如果我提供以下JSON以供python' s jsonschema.validate验证,那么当我认为枚举应该失败时,它被认为是有效的。

{
  "project_configurations": [
    {
      "configuration": "taoshwu",
      "platform": "esostat"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

$ ref关键字不正确。

尝试:

'$ref':'#/definitions/project_settings'