【发布时间】: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.logdata.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