我正在将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: {…}}
我想先了解一下为什么会发生这种情况,因为我没有找到遇到相同问题的人:)谢谢!
答案 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]可以正常工作。
希望它对您有所帮助,并恢复出现任何问题。