Ajv:使用动态密钥验证 json
Ajv: validate json with dynamic keys
我在 inserting/updating 我的数据库之前使用 ajv 来验证 JSON 数据模型。
今天我想用这个结构:
const dataStructure = {
xxx1234: { mobile: "ios" },
yyy89B: { mobile: "android" }
};
我的密钥是动态的,因为它们是 ID。
你知道如何用 ajv 验证它吗?
PS:作为替代方案,我当然可以使用这个结构:
const dataStructure = {
mobiles: [{
id: xxx1234,
mobile: "ios"
}, {
id: yyy89B,
mobile: "android"
}]
};
然后我将不得不在数组上循环以找到我想要的 ID。
我所有的查询都会变得更加复杂,这让我很困扰。
感谢您的帮助!
Below example may help you.
1.验证动态键值
Update regex with your requirement.
const dataStructure = {
11: { mobile: "android" },
86: { mobile: "android" }
};
var schema2 = {
"type": "object",
"patternProperties": {
"^[0-9]{2,6}$": { //allow key only `integer` and length between 2 to 6
"type": "object"
}
},
"additionalProperties": false
};
var validate = ajv.compile(schema2);
console.log(validate(dataStructure)); // true
console.log(dataStructure);
2.使用简单数据类型验证 JSON 的数组。
var schema = {
"properties": {
"mobiles": {
"type": "array", "items": {
"type": "object", "properties": {
"id": { "type": "string" },
"mobile": { "type": "string" }
}
}
}
}
};
const data = {
mobiles: [{
id: 'xxx1234',
mobile: "ios"
}]
};
var validate = ajv.compile(schema);
console.log(validate(data)); // true
console.log(data);
You can add your validation as per requirement.
我在 inserting/updating 我的数据库之前使用 ajv 来验证 JSON 数据模型。
今天我想用这个结构:
const dataStructure = {
xxx1234: { mobile: "ios" },
yyy89B: { mobile: "android" }
};
我的密钥是动态的,因为它们是 ID。 你知道如何用 ajv 验证它吗?
PS:作为替代方案,我当然可以使用这个结构:
const dataStructure = {
mobiles: [{
id: xxx1234,
mobile: "ios"
}, {
id: yyy89B,
mobile: "android"
}]
};
然后我将不得不在数组上循环以找到我想要的 ID。 我所有的查询都会变得更加复杂,这让我很困扰。
感谢您的帮助!
Below example may help you.
1.验证动态键值
Update regex with your requirement.
const dataStructure = {
11: { mobile: "android" },
86: { mobile: "android" }
};
var schema2 = {
"type": "object",
"patternProperties": {
"^[0-9]{2,6}$": { //allow key only `integer` and length between 2 to 6
"type": "object"
}
},
"additionalProperties": false
};
var validate = ajv.compile(schema2);
console.log(validate(dataStructure)); // true
console.log(dataStructure);
2.使用简单数据类型验证 JSON 的数组。
var schema = {
"properties": {
"mobiles": {
"type": "array", "items": {
"type": "object", "properties": {
"id": { "type": "string" },
"mobile": { "type": "string" }
}
}
}
}
};
const data = {
mobiles: [{
id: 'xxx1234',
mobile: "ios"
}]
};
var validate = ajv.compile(schema);
console.log(validate(data)); // true
console.log(data);
You can add your validation as per requirement.