【发布时间】:2019-11-19 13:27:12
【问题描述】:
我正在尝试创建一个 JSON 模式,它可以支持使用属性值验证 JSON 对象,这些属性值可以是常规 JSON 类型,也可以是表示有效 JSONpath 表达式的字符串。
例如,给定这个架构:
{
"$schema": "http://json-schema.org/draft-07/schema",
"properties": {
"age": {
"type": "number"
}
}
}
这些 JSON 对象中的任何一个都可能是有效的:
{
"age": 30
}
{
"age" "$.age"
}
我在尝试像这样添加一个名为 jsonPath 的自定义关键字时遇到了困难:
{
"$schema": "http://json-schema.org/draft-07/schema",
"properties": {
"age": {
"type": "number",
"jsonPath": true
}
}
}
ajv.addKeyword('jsonPath', {
valid: true,
compile: () => data => {
return /^\$./.test(data)
}
})
理想情况下,我希望能够检查给定的属性值是否是有效的 JSONPath 字符串,如果是,则批准它。否则让 ajv 运行它自己的验证。
感谢您的帮助!
【问题讨论】:
标签: node.js json jsonschema ajv