2014-12-11 4 views
0

오류를 일으킨 속성을 확인하려고합니다. 그것은 오류의 각 유형에 대한 속성을 얻는 방법이 다른 것 같습니다.각 jsonschema 오류에 대한 속성 가져 오기

from jsonschema import Draft4Validator 

request_json = { 
    'num_pages': 'invalid', 
    'duration': 'invalid', 
    'dne': 'invalid' 
} 

schema = { 
    "patch": { 
    "type": "object", 
    "properties": { 
     "name": {"type": "string"}, 
     "location": {}, 
     "description": {}, 
     "objectives": {}, 
     "num_pages": {"type": "integer"}, 
     "duration": {"type": "integer"} 
    }, 
    "required": ["name"], 
    "additionalProperties": False 
    } 
} 

v = Draft4Validator(schema['patch']) 
errors = [] 

for error in v.iter_errors(request_json): 
    print error.__dict__ 

이 예에서는이 필드와 오류 출력을 구성하려고합니다.

{ 
    num_pages: 'invalid is not an integer', 
    duration: 'invalid is not an integer', 
    'dne': 'unexpected additional property', 
    'name': 'property is required' 
} 

현재 내가 가진 다음 error.instance.keys() [0] 올바른 보장되지 않는 여러 오류가있는 경우

if error.relative_schema_path[0] == 'required': 
     errors.append({error.message.split(' ')[0]: 'Required property'}) 
    elif error.relative_path: 
     # field: error_message 
     errors.append({error.relative_path[0]: error.message}) 
    # Additional Field was found 
    else: 
     errors.append({error.instance.keys()[0]: error.message}) 

를 다음과 같습니다.

답변

관련 문제