当前位置: 首页 > 知识库问答 >
问题:

JSON模式引用了文档中的另一个元素

曹季同
2023-03-14

有没有办法用JSON schema表达对同一个JSON文档中另一个元素的引用?标题可能有点混乱,但我不是在寻找< code>"$ref"属性,它引用了另一个类型,但我很好奇,是否有一种方法可以使用指定的字段引用文档中的另一个元素。我知道对xml文档强制使用xsd是可能的,但不确定JSON。

我想做这样的事情:

{
  "people": [
    { "id": "1", "name": "A" },
    { "id": "2", "name": "B" },
    { "id": "3", "name": "C" }
  ],
  "chosenOne": "1" // I want the schema to enforce a person ID here
}

我一直在研究v4的模式定义:http://json-schema.org/draft-04/schema但什么也没找到,这看起来像是我要做的。我错过了吗?

共有1个答案

谷翰飞
2023-03-14

您想要的是在您的模式所描述的对象中描述一个引用($ref)。

{
    "people": []
    "chosenOne": { $ref: "#1"}
}

(或者可能是一个指针,如果你想要Id的值(https://json-spec.readthedocs.io/pointer.html)

我知道没有直接的方法可以做到这一点,但您可以使用模式或属性之一来强制它成为正确的值。有点像这样

"properties": {
    "chosenOne"
         "type": "string",
         "oneOf": ["1","2","3"]
         ]
     },
}

类似地,您可以强制该属性的值成为一个引用模式。也就是说,因为没有引用值类型(http://www.tutorialspoint.com/json/json_data_types.htm ),只有数字或字符串,所以不能保证值的含义。你可以保证if遵循某种参考模式。

 类似资料:
  • 我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根

  • 问题内容: 如果我有两个模式,如: 我试图像上面的示例一样将它们连接在一起,但是我不知道该怎么做。最终,如果我可以做这样的事情,那将使我的生活变得很轻松 问题答案: 听起来好像populate方法是您想要的。首先,对您的发布架构进行少量更改: 然后建立您的模型: 然后,当您进行查询时,可以像这样填充引用:

  • 问题内容: 我正在为约会应用程序构建Mongoose模式。 我希望每个文档都包含对它们所经历过的所有事件的引用,其中另一个是系统中具有自己模型的架构。如何在架构中对此进行描述? 问题答案: 您可以使用 人口 来描述它 填充是用其他集合中的文档自动替换文档中指定路径的过程。我们可以填充单个文档,多个文档,普通对象,多个普通对象或查询返回的所有对象。 假设您的事件模式定义如下: 为了显示如何使用填充,

  • 问题内容: 我试图在其中一个表上创建外键,并在其他模式中引用表的列。 像这样的东西: 由于我获得了必要的赠款,因此效果很好。 现在,我想知道是否有原因不引用其他模式中的表,或者有什么需要注意的地方? 问题答案: 没问题。在表之间建立外键关系时,架构实际上没有任何影响。只要确保适当的人员具有您打算使用的架构所必需的权限即可。

  • 由于是一个对象,并且它有另一个对象,只能有字符串或数字字段,而不能有对象,如何扩展元化学以强制执行此操作。感谢任何帮助

  • 假设我有两份文件。 一个是有大约2-3页的主模板。第二个只有一段文字与各种风格(粗体,斜体,下划线,字体大小等)。 我想用第二个文档中的段落替换模板中的一个参数。 null