我无法访问JSON中的第一个对象

时间:2016-04-12 12:15:27

标签: javascript jquery json

我曾尝试过其他指南,但似乎都没有。我想在一个看起来像这个(片段)的单独JSON文件中获取第一个对象:

Container

我的代码段如下所示:

{
    "employees": [{
        "occupation": "cook",
        "id": [{
            "address": {
                "postal_code": 12342,
                "city": "detroit"
              },
              "children": "none"
        ],
}
}
            // and so forth, there are more objects in the employees-array

我想访问第一个对象"地址"。如果我输入`console.log(this.address [0] .city);,我将从"雇员"中的每个对象获得所有第一个" city" -values。

事先谢谢!

4 个答案:

答案 0 :(得分:4)

each()内,this会引用employee对象,因此您需要将console.log()修改为:

$.each(data.employees, function(i, emp) {
    if (this.id.length) {
        console.log(this.id[0].address.city);
    }
});

答案 1 :(得分:3)

为什么不在每个块中使用emp变量?

$.each(data.employees, function(i, emp) {
    if (emp.id.length) {
        console.log(emp.id[0].address.city);
    }
}

答案 2 :(得分:1)

最初你的对象是

{
    "employees": [{
        "occupation": "cook",
        "id": [{
            "address": {
                "postal_code": 12342,
                "city": "detroit"
              },
              "children": "none"
        ],
}
}
  

试试这段代码。

  $.each(data.employees, function(i, emp) { //each function will able access each employees
    if (this.id.length) {
        console.log(this.id[0].address.city); // at each employee get the first element of array id.
    }
}
  1. .each函数将遍历employees数组。
  2. this.id[0]这将能够访问标识为id的数组的第一个元素。在id里面有一个地址对象。

               "address": {
                    "postal_code": 12342,
                    "city": "detroit"
                  }
    
  3. this.id[0].address: - 此代码将为您提供地址对象。

                 {
                    "postal_code": 12342,
                    "city": "detroit"
                  }
    
  4. this.id[0].address.city: - 在内部地址对象中,您现在将使用这段代码获取城市。在这里你会得到答案..

    "city": "detroit"
    
  5. 感谢。

答案 3 :(得分:1)

如果我理解你的问题,并根据@Velimir Tchatchevsky的评论,我认为你想要的是:

haddock

jsfidle