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

时间:2016-08-11 08:16:34

标签: json jsonschema

我正在研究定义jsons族的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模式,以便从有效的jsons集合中获取它?

1 个答案:

答案 0 :(得分:1)

绝对没有办法用json架构来实现这一点。

您有以下选择:

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