【问题标题】:Can't loop through JSON Object Javascript无法循环通过 JSON 对象 Javascript
【发布时间】:2016-06-22 11:08:22
【问题描述】:

我正在尝试使用 javascript 循环访问 JSON 对象。它是一个对象而不是数组的原因是因为使用 XAMARIN 和 C# 的 NewtonJSON 可以更好地访问相同的数据,just JSON 对象而不是对象和数组的混合。

下面是我正在尝试使用的 JSON 对象,我已经剪掉了一些部分,以便您可以看到我遇到问题的对象的主要部分。

CODE: NULL
VALUE:{
  USER24:{id: "24", business: "25", username: "test1", firstName: "test1", lastName: "test1", level: "0",…}
  USER25:{id: "25", business: "25", username: "test2", firstName: "test2", lastName: "test2", level: "0",…}
  USER26:{id: "26", business: "25", username: "test3", firstName: "test3", lastName: "test3", level: "0",…}
  USER27:{id: "27", business: "25", username: "test4", firstName: "test4", lastName: "test4",…}
  USER28:{id: "28", business: "25", username: "test5", firstName: "test5", lastName: "test5",…}
  USER29:{id: "29", business: "25", username: "test6", firstName: "test6", lastName: "test6", level: "0",…}
  USER30:{id: "30", business: "25", username: "test7", firstName: "test7", lastName: "test7", level: "0",…}
}
EXTRA: NULL

我遇到的问题是,当我遍历 data.VALUE 时,我得到了 USER24 的键和值,而不是 data 的键和值.VALUE。当我尝试遍历 data 时,我得到了 CODE、VALUE、EXTRA 键,正如我所期望的那样。

无论我在循环中放置什么,我都不会得到我想要的 USER24, USER25, USER26, ... 键和值。下面是我正在使用的 Javascript 循环的 sn-p:

  for(var key in data.VALUE){
    if(data.VALUE.hasOwnProperty(key)){
      console.log('key:'+key+', val:'+data.VALUE[key]);
    }
  }

我从中得到的只是:

key:id, val:24
key:business, val:25
key:username, val:test1
key:firstName, val:test1
key:lastName, val:test1
key:level, val:0
key:email, val:test1@test.co.uk
key:phone, val:null
key:isAdmin, val:true

这是完全错误的!

我不确定我还能做什么,我尝试使用 JQuery 中的 $.each,我没有使用新的 let[key, value],因为它目前还太新,无法依赖。

如果您需要更多信息或代码 sn-ps,请随时询问!提前感谢您的帮助!

这是 chrome 预览选项卡中 JSON 的图片(减去一些敏感数据):

【问题讨论】:

  • JSON 看起来无效,JavaScript 中 data 变量的格式是什么?
  • console.log data.VALUE 在循环之前。这会返回您期望的对象吗?
  • for(var key in data.VALUE)。你得到了 data.VALUE 中的每个键,所以你当然不会得到 USER24、USER25 等。
  • 它似乎工作正常here。确保您的 JSON 有效
  • 当'console.log''ing data.VALUE 我也只是得到 USER24 对象。我希望能够遍历 data.VALUE 中的每个对象,并且我认为“for(var key in data.VALUE)”能够做到这一点。

标签: javascript jquery json loops object


【解决方案1】:

你可以像这样通过 JQuery 中的 $.each 来完成它

$.each(data.VALUE, function (i, key) {
         $.each(key, function (j,k) {
              console.log('key:'+j+', val:'+k);
         });
     });

如果您想从 javascript 访问它,您将获取 data.VALUE.USER24 对象中的每个键。

for (var key in data.VALUE.USER24) {
  if(data.VALUE.USER24.hasOwnProperty(key)){
  console.log('key:' + key + ', val:' + data.VALUE.USER24[key]);
  }
}

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2016-10-11
    • 2013-10-29
    • 1970-01-01
    • 2017-07-18
    • 2020-04-28
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多