动态到达时,JSON对象属性为“未定义”

时间:2019-02-25 11:34:10

标签: javascript json object

我正在将JSON导入我的JS,但是在尝试使用 obj [varWithPropName] 来获取其属性时遇到一些问题。

但是,它在使用 obj [“ PropName”] 时有效。

下面是简化的片段,希望对您有所帮助!

import * as CharInfo from '../Configs/CharInfo.json';
(...)
this.ID = "Maya";

console.log("Maya" === this.ID); //true

console.log(typeof(CharInfo)); //object

console.log(CharInfo["Maya"]); //{configs: {…}, animations: {…}}

console.log(CharInfo[this.ID]); //undefined

这不是与“控制台”相关的问题,因为在console.log之外使用时,它会在运行时中断,

Uncaught TypeError: Cannot read property 'animations' of undefined

虽然它是这样工作的,

CharInfo.default[this.ID]; //{configs: {…}, animations: {…}}

我想先了解一下为什么会发生这种情况,因为我没有找到遇到相同问题的人:)谢谢!

1 个答案:

答案 0 :(得分:1)

这应该为您解决问题

  

从'../Configs/CharInfo.json'导入CharInfo

问题将是您默认将CharInfo.json文件中的JSON导出。像这样:

json = { /* your json */ };
export default json;

在导入时,您已导入

`import * as CharInfo...`  

会将文件中存在的所有内容导入到新变量CharInfo中,并且默认导出json作为CharInfo对象中的默认存在。

因此,实际的json现在可以作为CharInfo.default了。

如果您像import CharInfo from '../Configs/CharInfo.json'那样导入,您将在CharInfo中获取json,并且CharInfo [this.ID]可以正常工作。

希望它对您有所帮助,并恢复出现任何问题。