You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript/jQuery访问JSON嵌套数组?为何取值返回undefined?

问题分析与解决:嵌套JSON中age值返回undefined的原因

你的问题出在对assets的访问方式上:assets是一个数组(用[]定义),不是单个对象,直接通过.assets.age访问相当于在数组对象本身查找age属性,而数组没有这个属性,所以返回undefined。

修正方案(单元素assets场景)

如果每个工单的assets固定只有一个元素,直接通过数组索引[0]访问数组内的对象,再获取age:

var json = {
    "status": "OK",
    "tickets": {
        "open_tickets": [{
            "id": "2",
            "assets": [{
                "id": 2446,
                "age": 4
            }]
        }, {
            "id": "3",
            "assets": [{
                "id": 244564646,
                "age": 28
            }]
        }]
    }
};

for(i=0;i<json.tickets.open_tickets.length;i++){
    var ticket = json.tickets.open_tickets[i];
    var id = ticket.id;
    // 通过数组索引获取assets中的第一个对象,再取age
    var age = ticket.assets[0].age;

    $('.holder').append('<p>'+id+' '+age+'</p>');
}

扩展方案(多元素assets场景)

如果assets可能包含多个元素,需要嵌套循环遍历所有资产:

var json = {
    "status": "OK",
    "tickets": {
        "open_tickets": [{
            "id": "2",
            "assets": [{
                "id": 2446,
                "age": 4
            }, {
                "id": 2447,
                "age": 6
            }]
        }, {
            "id": "3",
            "assets": [{
                "id": 244564646,
                "age": 28
            }]
        }]
    }
};

for(i=0;i<json.tickets.open_tickets.length;i++){
    var ticket = json.tickets.open_tickets[i];
    var id = ticket.id;
    // 遍历当前工单下的所有资产
    for(j=0;j<ticket.assets.length;j++){
        var age = ticket.assets[j].age;
        $('.holder').append('<p>'+id+' '+age+'</p>');
    }
}

关键注意点

访问嵌套JSON结构时,务必先确认每一层的数据类型:

  • 对象({}包裹)用点语法object.key访问属性
  • 数组([]包裹)用索引array[index]访问元素,再对元素(通常是对象)使用点语法

内容的提问来源于stack exchange,提问作者drago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 11:17:35