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

如何动态遍历jQuery $.getJSON返回的多层JSON数据

解决动态键JSON数据的遍历问题

你的问题核心在于动态键无法通过静态的点语法访问——原来的data.result.DYNAMIC_DATA会试图查找名为DYNAMIC_DATA的固定键,但实际返回的是DYNAMIC_DATA_1、DYNAMIC_DATA_2这类动态生成的唯一ID键。下面提供两种简单可靠的遍历方法:

方法1:使用Object.keys() + forEach遍历

Object.keys()可以直接提取对象的所有自身属性名(也就是那些动态ID键),再用forEach循环处理每个键对应的数据:

$(function(){
  $.getJSON('/api/username?id='+DYNAMIC_USER_ID, function(data) {
    // 提取result对象下的所有动态键
    const dynamicIds = Object.keys(data.result);
    
    // 遍历每个动态键,获取对应的用户信息
    dynamicIds.forEach(id => {
      const userInfo = data.result[id];
      console.log(`用户ID ${id} 的名字是:${userInfo.name}`);
      // 这里也可以获取age:userInfo.age
    });
  });
});

方法2:使用for...in循环

如果需要兼容更旧的浏览器(比如IE9及以下),for...in是更稳妥的选择,记得加上hasOwnProperty判断避免遍历到原型链上的属性:

$(function(){
  $.getJSON('/api/username?id='+DYNAMIC_USER_ID, function(data) {
    for (const id in data.result) {
      // 确保只遍历result自身的动态键,排除原型属性
      if (data.result.hasOwnProperty(id)) {
        const userInfo = data.result[id];
        console.log(userInfo.name);
      }
    }
  });
});

关键知识点

访问对象属性有两种方式:

  • 点语法:obj.staticKey —— 仅适用于已知固定名称的键
  • 方括号语法:obj[dynamicKey] —— 适用于键名是变量或动态生成的场景

你的场景正好对应第二种情况,所以必须用方括号语法来通过动态键获取对应的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:26