JSON javascript显示值未定义

时间:2016-08-25 11:04:59

标签: javascript json

我有一个返回的JSON对象,看起来像这样

[
    {
        "competition": {
            "name": "Premier League",
        },
        "nextState": 1,
        "team_id": 1
}, {
        "competition": {
            "name": "Premier League",
        },
        "nextState": 1,
        "team_id": 2
}
]

这是JSON的精简版,我试图访问说team_id

result = JSON.stringify(result, null, 4);
    console.log(result);

    $('#test').append(result);

    alert(result[0].team_id);

我似乎得到的都是未定义的,我是不是正确访问了这个?

非常感谢

3 个答案:

答案 0 :(得分:0)

您已将对象result字符串化为字符串。因此,您肯定无法再访问这些属性了。

对字符串化结果使用第二个变量:

var result_stringified = JSON.stringify(result, null, 4);
console.log(result_stringified);
$('#test').append(result_stringified);
alert(result[0].team_id);

答案 1 :(得分:0)

试试这个:

var data = [{
      "competition": {
        "name": "Premier League",
      },
      "nextState": 1,
      "team_id": 1
    }, {
      "competition": {
        "name": "Premier League",
      },
      "nextState": 1,
      "team_id": 2
    }]



    $.each(data, function(k, v) {
      alert(this.team_id);
    })

答案 2 :(得分:0)

您看到undefined的原因是因为您已经将JSON对象已经字符串化为String。所以一个String!= Array,因此执行String [0]会给你未定义的,显然对未定义的.team_id仍然是undefined

你得到的是array javascript objects

要访问对象的特定team_id属性,首先必须从数组中访问object,然后使用.team_id表示法或["team_id"]语法object

示例:



var items =[
    {
        "competition": {
            "name": "Premier League",
        },
        "nextState": 1,
        "team_id": 1
    },
    {
        "competition": {
            "name": "Premier League",
        },
        "nextState": 1,
        "team_id": 2
    }
]

items.forEach(item => { console.log("item_id= " + item.team_id + ", competition= " + item.competition.name); });




我为上述示例所做的是,我使用forEach API浏览items数组的各个项目,然后通过访问打印object的详细信息其team_id和嵌套的competition.name属性。

只是因为您对.forEach() API感兴趣。

查看:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach