json - 在 Json 模式中按名称封装 Root 对象以供重用?
问题描述
我正在尝试为一个对象创建一个 Json 模式。在其中定义嵌入对象时,是否可以引用顶级根对象?
我已经看到我可以通过 $ref:"#/definitions/..." 重用定义,但我正在尝试重用整个顶级对象。不仅仅是里面的属性。
如果我的 json 看起来像这样:
{
"name": "brodie",
"age": 2,
"bestFriend": {
"name": "clara",
"age": 4,
"bestFriend": {
"name": "stella",
"age" : 5
}
}
}
我可以创建一个如下所示的 json 模式:
{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/name"
},
"age": {
"$ref": "#/definitions/age"
},
"bestFriend": {
"$ref": "#/definitions/bestFriend"
},
},
"definitions": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"bestFriend": {
"type": "object",
"allOf": [
{"$ref": "#/defintions/name"},
{"$ref": "#/definitions/age"},
{"$ref": "#/definitions/bestFriend"}
]
}
}
}
但我想做类似的事情
{
"type": "object",
"title": "bestFriend",
"properties": {
"$ref": "#/definitions/bestFriend"
},
"definitions": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"bestFriend": {
"type": "object",
"allOf": [
{"$ref": "#/defintions/name"},
{"$ref": "#/definitions/age"},
{"$ref": "#/definitions/bestFriend"}
]
}
}
}
我对所有 3 个实例 brodie、clara、stella 使用相同的 json 对象。我想将顶级对象封装为一个定义,以便稍后以更简洁的方式引用它。如果我在顶部没有 $refs 列表并且只在底部的“定义”对象中包含它们,那就太好了。这甚至可能吗?或者是我上面推荐的模式。
(我知道我可以内联定义其中一些字段,但我计划大量重用一些 json 对象,并且觉得如果所有内容都在“定义”部分中定义会更清晰。)
解决方案
推荐阅读
- python - 如何在一天中的特定时间启动/停止功能?
- windows - 在 Windows 上使用 Powershell 删除 ShellIconOverlayIdentifiers
- reactjs - 导入不适用于 redux 中的 typescript reducer
- reactjs - 在 GCP App Engine 上使用代码拆分部署应用程序 - 加载块 * 失败
- bash - 使用 Bash 脚本中的个人访问令牌访问 Github 上的组织存储库
- console - 使用控制台将 Ansys Fluent Solution 中的目录更改为名称中包含空格的文件夹
- matlab - matlab把图形停靠在编辑器里面的命令是什么
- c# - 从两个不同的对象填充 DTO
- git - Github:如何推送到我无权克隆的组织的存储库
- apache-spark - Spark writing output back to the input directory