首页 > 解决方案 > 无法访问对象内的 JSON 数据。财产

问题描述

我目前正在从事 LitElement 项目。我使用此代码将 JSON 数据添加到 category.items 属性中,

fetchItems(category) {   
    if (!category || category.items) {
      return;
    }

    this.getResource({
      url: 'data/' + category.name + '.json',
      onLoad(e) {
        category.items= JSON.parse(e.target.responseText);
      },

    });
}

 getResource(rq) {
    let xhr = new XMLHttpRequest();
    xhr.addEventListener('load', rq.onLoad.bind(this));
    xhr.open('GET', rq.url);
    xhr.send();
  }
}

然后我尝试在另一个组件中获取这些数据,但我无法访问 Items 属性。

我用来获取数据的代码,

handleCategoriesyChanged(e) {
    this.categories = e.detail.categories.value; 
    if(this.location!=undefined){
        for(let i=0; i<this.categories.length ;i++){
            if(this.location.params[0]==this.categories[i].name){
                this.item = this.categories[i];
            }
        }
        console.log(this.item);
        console.log(this.item.items);
        console.log(JSON.stringify(this.item, null ,2));
        console.log(this.item.items);
    }   

这是 chrome 中的 console.log 输出。 在此处输入图像描述

当我调用该对象时,它显示了 items 属性,但我无法访问它。所以,我尝试了 JSON.stringify 方法,但当时没有显示 items 属性。我在这个网站上遇到了类似的问题,但我无法确定出了什么问题以及为什么会在这种情况下发生这种情况。

标签: javascriptjsonobjectconsole.loglit-element

解决方案


看起来你正在改变你的并在你的日志之后的某个地方this.item添加字段。这就是JSON.stringifyitems中没有键的原因。items

console.log(this.item);this.items当您通过引用更改对象时,记录对和输出的引用将被更改。

尝试执行此代码并展开第一个 console.log 输出以查看我在说什么。

var object = {};
console.log(object);
console.log(object.a);
object.a = 'first key';
console.log(object);

推荐阅读