Json 模式可以要求一个值等于另一个值吗?

问题描述 投票:0回答:1

考虑以下模式:

{
  "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
是一个数字) .

jsonschema
1个回答
0
投票

您可以将

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"} 
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.