使用 json 模式在 json 的一部分中强制执行一组键以子集化在 json 的另一部分中的一组键

Enforcing a set of keys in one part of the json to subset a set of keys in another part of the json using a json schema

我正在研究一个 json 架构,它定义了一个 json 系列,并且有一个特定的约束我不确定如何执行。在一个有效的 json 文件中,我应该有(除其他外)两个对象。让我们调用第一个对象 entities 和第二个对象 fieldsentities 对象还包含一个 entityFields 条目,该条目应包含其键来自 fields 中的键集的对象。为了使描述清楚,我将使用以下有效的 json:

进行演示
{
  "entities":
  {
    "entity1":
    {
      "entityFields":
      {
        "field1": {},
        "field2": {}
      }
    },
    "entity2":
    {
      "entityFields":
      {
        "field4": {},
        "field5": {}
      }
    },
    "entity3":
    {
      "entityFields":
      {
        "field1": {},
        "field5": {}
      }
    }
  },
  "fields":
  {
    "field1": {},
    "field2": {},
    "field3": {},
    "field4": {},
    "field5": {},
    "field6": {}
  }
}

观察到每个实体都有来自下面 fields 下定义的字段集的实体字段。这是我要强制执行的约束。通常,我如何强制 json 的一部分中的键集成为 json 的不同部分中的键集的子集?具体来说,我应该向 json 模式添加什么以便从有效的 json 集合中要求它?

json 模式绝对无法实现。

您有以下选择:

  • 手动执行验证,没有任何 json 模式
  • 首先遍历您的 entitiesentityFields,以编程方式从中生成 json 模式,然后根据生成的模式验证字段。 entitiesentityFields 形成了一些简单的类型系统 - 在这个概念中,您可能希望将它们转换为其他类型系统(json 模式)。