考虑以下模式:
{
"properties":{
"a": { "type":"string"},
"meta": {
"type": "object",
"properties": {
"a": { /*what might I put here to require that obj.a == obj.meta.a?*/ }
}
}
}
}
我可以以某种方式要求
a == meta.a
吗?
完全不需要,甚至不适用于导致我提出这个问题的情况,但知道我是否可以执行任何操作也很有趣,例如子字符串或求幂(如果
a
是一个数字) .
您可以将
meta
引用 a
,因此它始终与 a
具有相同的数据类型。强制使用相同值的唯一方法是在 const
内部使用 a
。那么就相当于{a: thing, meta: {a: thing}}
我不确定你为什么要这样做,只需将
const
对象模式中的 meta
设置为你想要的任何值即可。
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties":{
"a": { "type":"string", "const": "thing"},
"meta": {
"type": "object",
"properties": {
"a": {"$ref": "#/properties/a"}
}
}
}
}