“jsonschema”没有验证Python中的模式

问题描述 投票:0回答:1

JSON记录应该无效,但它显示的值为True

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记录的架构得到验证

python json jsonschema
1个回答
0
投票

你的type关键字后面有空格。 Json Schema不会将其视为关键字并忽略它。摆脱额外的空间,它将按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.