我正在将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: {…}}


我想了解为什么在使用一些周转之前会发生这种情况,因为我没有找到遇到相同问题的人:)谢谢!

最佳答案

这应该为您解决问题


  从'../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]可以正常工作。

希望对您有所帮助,请恢复为任何问题。

10-07 18:03