2017-12-13 9 views
0

json으로 기록이 유효해야 파이썬에서 스키마의 유효성을 검사하지만이 사실로 값을 표시되지"jsonschema"

import json 
import jsonschema 
dat='{"TID":"9020","CUR":"USD","DAT1":"t","DAT2":11}' 

print type(dat) 
def validJson(rowData): 
    jsonRec=json.loads(rowData) 
    jsonSc=json.loads('''{ "title": "NCAP", "type": "object", "properties": { "TID" : { "type ": [ "string" ] },"CUR" : { "type ": [ "string" ] , "maxLength" : 3 },"DAT1" : { "type ": [ "number","null"] , "maximum" : 99999999999 },"DAT2" : { "type ": [ "number" ,"null"] , "maximum" : 112 } }, "required": [ "TID", "CUR", "DAT1", "DAT2" ] }''') 
    val = jsonschema.Draft3Validator(jsonSc).is_valid(jsonRec) 
    print "is records valid ::"+str(val) 
    va=jsonschema.validate(jsonRec, jsonSc) 
    print "records validated "+str(va) 
    return json.dumps(jsonRec) 

print validJson(dat) 

False를해야하는 이유는 그 값이 "동안 DAT1의 데이터 형식 수 있다는 것이다 t "

또는

사람은 json으로 레코드가 당신의 type 키워드 다음의 스키마

+1

왜 이것이 유효하지 않다고 생각하십니까? –

+0

http://jsonviewer.stack.hu/를 사용하여 확인했는데 괜찮 았습니다. – Salman

+0

@ cᴏʟᴅs it False 여야하는 이유는 값이 "t"인 동안 DAT1 데이터 유형이 숫자이고 –

답변

0

당신은 공간이에 대한 검증됩니다 몇 가지 방법을 제안 할 수있는 경우. Json Schema는이를 키워드로 인식하지 않고 무시합니다. 여분의 공간을 없애면 예상대로 작동합니다.

+0

덕분에 성공했습니다! –