【问题标题】:Obtaining value via $ref / self reference通过 $ref / 自引用获取值
【发布时间】:2019-03-14 19:26:00
【问题描述】:

我想使用引用来引用我的 JSON 结构中的现有对象;专门访问它的键和值。

我认为我应该能够引用现有对象然后使用点符号来访问所述键和值是合理的 - 但我更可能误解了这项技术。

var courses = {
            Engl101 : {
                course : "English 101",
                units : 5,
                req_type : false ,
                req: false
            },
            Engl112: {
                course : "English 112",
                units : 3,
                req_type : "prerequisite" ,
                req: { "$ref": "#/courses/Engl101"}
            }
        }

我希望我应该能够使用

访问我的先修课程
courses.Engl112.req 

我实际得到的似乎是一个无法访问子键/值的字符串。

另外,我尝试通过 Object.keys(courses.Engl112.req) 访问,但没有实际进展。

这可行吗,提前谢谢你?

【问题讨论】:

  • 你所拥有的是一个 JS 对象文字,而不是 JSON。 JSON 总是 JS 对象的字符串表示。
  • 嗨艾米,谢谢你的解释。只是好奇:如果通过 fetch() 访问 JSON 文件与我的脚本标签中的 Object { } 访问,这会不会有根本的不同?
  • 当你问“this会有根本的不同”时,“this”指的是什么?
  • 抱歉澄清一下,我的意思不是“this”上下文对象——我只是想知道在查看脚本标签中实例化的对象时访问 JSON 数据是否有任何不同:let object = {. ..} 与从 JSON 文件或 AJAX 调用中获取外部对象.. 例如:fetch('JSON_file.json')...

标签: javascript json self-reference


【解决方案1】:

如果您的课程名称是独一无二的,您可以填写

req: "English101"

然后您可以通过

访问必修课程
courses[courses.Engl112.req]

【讨论】:

  • 出色的皮埃尔!非常感谢 - 这非常有效。感谢您花时间为我回答这个问题。我对语法感到困惑 - 看起来它正在访问我的课程变量并且目标在一个数组中?或者这可能与我遍历 for 循环时相同(例如:Object[i].nested_Content)。你能指出一个资源,我可以用来教育自己。非常感谢!
  • 我会试着简单解释一下这里发生了什么,首先你的 json 数据是一个对象,就像一个字符串,基本上是 js 中的任何其他东西,所以当你想获得像 Engl101 这样的课程时,你可以以两种方式做到这一点:首先使用 myCourse.Engl101 ,其次使用 myCourses["Engl101"] 所以当你的 req 是一个字符串时,你可以通过结合这两种方法来做我在答案中所做的事情。关于资源:我建议你看看对象在 js 中是如何工作的,很高兴能提供帮助
【解决方案2】:

使用纯 JavaScript,你不能做这样的事情。 但是存在一些库来支持 JSON 中的内部和外部引用。一个著名的:json-schema-ref-parser

【讨论】:

  • 感谢您提供 Brice 资源。我肯定会做一些调查
猜你喜欢
  • 2020-09-07
  • 2011-09-28
  • 2023-03-16
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2012-10-13
相关资源
最近更新 更多