如何访问json文件中的数组中的数组

时间:2018-12-14 08:44:33

标签: javascript arrays json web

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    document.getElementById("demo").innerHTML = myObj.name;
  }
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();



{
"name":"John",
"age":31,
"pets":[
    { "animal":"dog", "name":"Fido" },
    { "animal":"cat", "name":"Felix" },
    { "animal":"hamster", "name":"Lightning" }
]}

我该如何引用pets数组中的值。如上所示,我可以引用名称值,但是每当我尝试引用宠物中的动物值时,都可以引用该名称值。它只返回[object Object]

5 个答案:

答案 0 :(得分:2)

您需要循环“宠物”。就像

  var dataArry = {
           "name":"John",
           "age":31,
           "pets":[
             { "animal":"dog", "name":"Fido" },
             { "animal":"cat", "name":"Felix" },
             { "animal":"hamster", "name":"Lightning" }
        ]}


   dataArry.pets.forEach(function(eachPet) {
        console.log(eachPet);
    });

您需要使用foreach函数。希望对您有帮助。

答案 1 :(得分:1)

尝试一下:

myObj.pets.map(function(item){ console.log(item) })

这将为您提供以下结果:

{动物:“狗”,名字:“ Fido”}

{动物:“猫”,名称:“费利克斯”}

{动物:“仓鼠”,名称:“闪电”}

使用

来访问单个动物的名字
myObj.pets.map(function(item){ console.log(item.name); })

获得动物使用:

myObj.pets.map(function(item){ console.log(item.animal); })

另一个选择是使用:

for(var pet of myObj.pets)
{
  console.log(pet.animal); //for animal
  console.log(pet.name); //for name
}

答案 2 :(得分:1)

尝试

myObj.pets.forEach(function (pet) {
    console.log(pet); // What you need is probably *pet.name*
});

答案 3 :(得分:1)

尝试一下。

    var pets= myObj.pets;
    for(var i=0;i<pets.length;i++){
        console.log(pets[i].name);
    }

答案 4 :(得分:-1)

您可以这样访问* edit:使用jQuery.each() *

        var person = {
        "name":"John",
        "age":31,
        "pets":[
            { "animal":"dog", "name":"Fido" },
            { "animal":"cat", "name":"Felix" },
            { "animal":"hamster", "name":"Lightning" }
        ]};

        $.each(person.pets,function (k,v) {
            console.log(v.animal, v.name);
        });