【发布时间】:2019-06-25 07:04:21
【问题描述】:
示例: 目前我们可以在地址名称属性中引用名称属性值,如下所示
{
person: {
name: "a",
address: {
name: { "$ref":"#/person/name"},
zip:"123"
}
}
}
有什么方法可以参考下面的相对路径。
{
person: {
name: "a",
address: {
name: { "$ref":"#/../name"},
zip:"123"
}
}
}
对于上面的问题,我正在查看的是一种简单的方法来引用当前 json 中的任何值,其中存在复杂和多个层次结构,如下面的第一个代码 sn-p 中给出的。对于从同级引用“名称”属性,我必须提到从根开始的完整路径,尽管可以维护。如果层次结构发生微小变化,则引用将不再有效。
{
"one": {
"two": {
"three": {
"four": {
"five": {
"fiveLevel1": {
"name": "foo"
},
"fiveLevel2": {
"name": {
"$ref": "#/one/two/three/four/five/fiveLevel1/name"
}
}
}
}
}
}
}
}
如果我们能够引用与第二个 sn-p 中给出的相同属性,则上层层次结构的变化不会对引用产生任何影响,只有当“FiveLevel1”的兄弟有直接变化时才会发生变化,并且“五级2”
{
"one": {
"two": {
"three": {
"four": {
"five": {
"fiveLevel1": {
"name": "foo"
},
"fiveLevel2": {
"name": {
"$ref": "#../fiveLevel1/name"
}
}
}
}
}
}
}
}
【问题讨论】:
-
据我所知,JSON 中不存在引用的概念。您仍然可以用符号表示引用,就像您在此处所做的那样,但这种符号只对您很重要,对 JSON 本身并不重要。
-
@GershomMaes JSON 中有很多嵌入支持它
-
您正在使用什么 API 来支持这些
$ref键?也许其中一些教程会对您有所帮助:swagger.io/docs/specification/using-refcswr.github.io/JsonSchema/spec/definitions_references -
我尝试了以下来自 stackoverflow 和库(如 Douglas Crockfords Plugin 和 json-schema-ref-parser 包)的答案。 stackoverflow.com/questions/15312529/…github.com/douglascrockford/JSON-jsnpmjs.com/package/json-schema-ref-parser
标签: javascript json jsonpointer