背景 我在这里嘲笑我的问题以供参考: https://jsonschemalint.com/#/version/draft-06/markup/json?gist=4c185903d7aeb13f6977852a09cf5462
我正在使用这个npm包:https://www.npmjs.com/package/jsonschema
CODE
//i read in JSON specified in files (the contents of which are below) and parse them into JSON objects. This process works fine.
var jsonDef = JSON.parse(schemaFile); //i store this jsonDef in my database as an object
var jsonObj = JSON.parse(objFile);
var jsonv = new JSONValidator();
var validateResult = jsonv.validate(jsonObj, jsonDef); //jsonDef is read from my database
//validateResult.valid is true
问题:
我有一个通用模式+元数据定义,因此("props"
包含我想验证的实际对象模式)
schemaFile:
{
"name":"schoolDemo",
"displayName":"School Demo",
"propertiesKey":"assetId",
"props":{
"assetId": {
"type": "string"
},
"grade": {
"type": "number"
}
}
}
OBJFILE:
{
"assetId": "75255972",
"grade": "A"
}
但是,当我尝试验证以下用户输入对象时,它会成功。 不应该因为:
而失败(1)初始元数据+架构定义中没有"properties"
个元素?根据此处显示的示例,似乎需要此字段:https://www.npmjs.com/package/jsonschema
(2)type
的{{1}}不是grade
我做错了什么?
答案 0 :(得分:0)
验证正在通过,因为架构格式不正确(缺少“属性”)。
尝试此操作,然后验证将失败:
{
"name": "schoolDemo",
"displayName": "School Demo",
"propertiesKey": "assetId",
"properties": {
"assetId": {
"type": "string"
},
"grade": {
"type": "number"
}
}
}