使用 AJV 为 Json 架构修改数据
Modify data using AJV for Json Schema
我在 NodeJs 上使用 AJV(另一个 Json 模式验证器)。
我有以下架构
var schema = {
"$id": "testSchema.json",
"type": "object",
"$schema": "http://json-schema.org/draft-06/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"type": "integer"
},
"userName": {
"type": "string"
},
"uniqueID": {
"type": "integer"
}
}
}
我需要用我可以以某种方式传递给 Json 模式或 AJV 的值覆盖 unqiueID
属性。
我认为以上可以使用 AJV addKeyword 方法完成,尝试使用它但失败了,因为我不知道如何操作(和 return)来自 AJV 自定义关键字的数据值。
是否可以使用 AJV 修改数据?或者还有其他可能的方法吗?
谢谢!
您可以创建一个自定义关键字,其功能可以对数据执行任何操作。
var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true});
ajv.addKeyword('my_id_rewrite', {
type: 'object',
compile: function (sch, parentSchema) {
return function (data) {
console.log(data)
data['my_id']=parentSchema.my_id_rewrite;
return true;
}
}
});
var schema = { "my_id_rewrite": 2 };
var validate = ajv.compile(schema);
o = {"my_id":1}
console.log(validate(o)); // true
console.log(o); // Object {my_id: 2}
我在 NodeJs 上使用 AJV(另一个 Json 模式验证器)。
我有以下架构
var schema = {
"$id": "testSchema.json",
"type": "object",
"$schema": "http://json-schema.org/draft-06/schema#",
"additionalProperties": false,
"properties": {
"userId": {
"type": "integer"
},
"userName": {
"type": "string"
},
"uniqueID": {
"type": "integer"
}
}
}
我需要用我可以以某种方式传递给 Json 模式或 AJV 的值覆盖 unqiueID
属性。
我认为以上可以使用 AJV addKeyword 方法完成,尝试使用它但失败了,因为我不知道如何操作(和 return)来自 AJV 自定义关键字的数据值。
是否可以使用 AJV 修改数据?或者还有其他可能的方法吗?
谢谢!
您可以创建一个自定义关键字,其功能可以对数据执行任何操作。
var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true});
ajv.addKeyword('my_id_rewrite', {
type: 'object',
compile: function (sch, parentSchema) {
return function (data) {
console.log(data)
data['my_id']=parentSchema.my_id_rewrite;
return true;
}
}
});
var schema = { "my_id_rewrite": 2 };
var validate = ajv.compile(schema);
o = {"my_id":1}
console.log(validate(o)); // true
console.log(o); // Object {my_id: 2}