AJV 使用 JSONPath 字符串验证架构
AJV validate schema with JSONPath strings
我正在尝试创建一个 JSON 模式,该模式可以支持验证具有 属性 值的 JSON 对象,这些值可以是常规 JSON 类型或表示有效的字符串JSON路径表达式。
因此,例如,给定此架构:
{
"$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)
}
})
理想情况下,我希望能够检查给定的 属性 值是否是有效的 JSON 路径字符串,如果是,则批准它。否则让ajv运行自己验证
感谢您的帮助!
我不知道你是否可以阻止其他关键字运行。有多种方法可以将 JSON Schema 中的检查应用于同一位置,因此这可能非常困难,而且 ajv 可能不支持。
您可以将其构建到您的架构中。
{
"$schema": "http://json-schema.org/draft-07/schema",
"properties": {
"age": {
"anyOf": [
{
"type": "number"
},
{
"pattern": "REGEX FOR JSON PATH"
}
]
}
}
}
您可以 de-duplicate 使用 definitions
的正则表达式并使用 $ref
引用它。
我正在尝试创建一个 JSON 模式,该模式可以支持验证具有 属性 值的 JSON 对象,这些值可以是常规 JSON 类型或表示有效的字符串JSON路径表达式。
因此,例如,给定此架构:
{
"$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)
}
})
理想情况下,我希望能够检查给定的 属性 值是否是有效的 JSON 路径字符串,如果是,则批准它。否则让ajv运行自己验证
感谢您的帮助!
我不知道你是否可以阻止其他关键字运行。有多种方法可以将 JSON Schema 中的检查应用于同一位置,因此这可能非常困难,而且 ajv 可能不支持。
您可以将其构建到您的架构中。
{
"$schema": "http://json-schema.org/draft-07/schema",
"properties": {
"age": {
"anyOf": [
{
"type": "number"
},
{
"pattern": "REGEX FOR JSON PATH"
}
]
}
}
}
您可以 de-duplicate 使用 definitions
的正则表达式并使用 $ref
引用它。