2013-04-18 1 views
0

JSON 스키마와 valdictory를 구문 분석기/유효성 검사기로 사용하여 다음 스키마 유효성 검사 오류가 발생합니다. 스키마는 jsonschema.net (같은 JSON 데이터를 사용)를 사용하여 자동 생성되었습니다validictory를 사용한 json-schema 유효성 검사

validictory.validator.FieldValidationError: Value '{"bp": [{"category": "bp", 
"created": "2013-03-08T09:14:48.148000", "value": 147.0, "day": "2013-03-11T00:00:00", 
"value2": 43.0, "id": "dc049c0e-d19a-4e3e-93ea-66438a239712", "unit": "mmHg"}]}' 
for field '_data' is not of type object 

코드 :

import json 
import validictory 

data = json.dumps({'bp': [{'category': 'bp', 
     'created': '2013-03-08T09:14:48.148000', 
     'day': '2013-03-11T00:00:00', 
     'id': 'dc049c0e-d19a-4e3e-93ea-66438a239712', 
     'unit': 'mmHg', 
     'value': 147.0, 
     'value2': 43.0}]}) 


schema = { 
    "type":"object", 
    "properties":{ 
     "bp": { 
      "type":"array", 
      "required":False, 
      "items": 
       { 
        "type":"object", 
        "required":False, 
        "properties":{ 
         "category": { 
          "type":"string", 
          "default": "bp", 
          "required":False 
         }, 
         "created": { 
          "type":"string", 
          "default": "2013-03-08T09:14:48.148000", 
          "required":False 
         }, 
         "day": { 
          "type":"string", 
          "default": "2013-03-11T00:00:00", 
          "required":False 
         }, 
         "id": { 
          "type":"string", 
          "default": "dc049c0e-d19a-4e3e-93ea-66438a239712", 
          "required":False 
         }, 
         "unit": { 
          "type":"string", 
          "default": "mmHg", 
          "required":False 
         }, 
         "value2": { 
          "type":"number", 
          "default":43, 
          "required":False 
         }, 
         "value": { 
          "type":"number", 
          "default":147, 
          "required":False 
         } 
        } 
       } 


     } 
    } 
} 

validictory.validate(data,schema) 

답변

2

나는 도서관에 익숙하지 해요,하지만 당신은 JSON 텍스트를 확인하는 것으로 나타 데이터 그 자체가 아니라 스키마가 데이터가 객체 여야한다고 말하면 유효성 검사기는 문자열을보고 있습니다.

data = json.dumps({...}) 대신에 data = {...}을 입력하면 어떻게됩니까?