有没有办法将json架构统一到一个文件中?

时间:2018-05-08 14:27:58

标签: json jsonschema

我正在寻找一种方法将两个json模式统一为一个,方法是将一个json模式作为另一个的字段插入。也就是说,模式A将具有由模式B的内容定义的属性。

为了澄清,我不想从架构B中引用架构A.我希望直接在B的特定点插入 B的内容所以我可以有一个JSON文档,但我认为只是"粘贴"以编程方式进入财产的内容是不够的。

2 个答案:

答案 0 :(得分:1)

JSON Schema的设计使您可以使用其全部内容替换引用,并且行为将是相同的,如果您使用相对URI引用,则可能有一个例外。

如果您有类似“A.json”的架构:

{
    "type": "object",
    "properties": {
        "b": {"$ref": "B.json"}
    }
}

你有“B.json”:

{ "type": "string" }

这可以折叠成以下内容:

{
    "type": "object",
    "properties": {
        "b": { "type": "string" }
    }
}

有一种情况,行为会发生变化,如果您使用相对URI引用,并且您要替换的文档的URI会导致URI Reference以不同于之前的方式解析为完整URI 。在这些情况下,在每个模式的根目录中使用完整(绝对)URI。

答案 1 :(得分:0)

我试着给你提问但是我试着猜(如果你添加一个例子可能会更好!)。所以我认为你有两个架构,如:

{ "schema": "A",
   ........
 }

 {"schema": "B",
   .......
  }

所以,你有两次机会统一它们: -manually - 使用程序

手动它是微不足道的,因为你只需要复制和粘贴:

 { "schema": "B",
   ........

  "schema_pasted": "A",
   .......
  }

或者你可以使用一些库来自动获得相同的结果(对于Java中的exonle GSON https://github.com/google/gson)。