我想为一个yaml文件创建一个json schema,该文件将包含一个定义键列表,稍后将在yaml文档中引用。
例子myDef:
foo: bar
baz: lipsum
someProperty:
refferencedValue: foo
模式应该只验证myDef
中列出的someProperty.refferencedValue
的值。所以只有foo
和baz
是有效的someProperty.refferencedValue
在jsonschema中是可能的吗?如果是这样,会是什么样子呢?
在jsonschema中,不可能从数据中引用任意的动态值来将其用作模式验证的一部分。有关更多上下文,请参阅本讨论。然而:
如果可以枚举myDef
对象的所有可能的属性(或属性名称模式),您可以使用oneOf
对每个属性的someProperty.refferencedValue
值应用特定的约束。
如果不能枚举所有不能使用标准json模式的值。一些验证器库实现了可以帮助您的非标准特性。例如,Avj实现了一个$data
关键字,可以解决您的问题。但是请记住,此解决方案与Avj绑定-其他验证器将忽略此关键字。