我有一个从JSON反序列化的对象:
[Log] {"Rob7":{"lastSeenAt":null,"state":"online","userId":"Rob7"},"Techyudh_rob63":{"lastSeenAt":"2018-07-18T17:45:56Z","state":"offline","userId":"Techyudh_rob63"},"Teacher4":{"lastSeenAt":null,"state":"online","userId":"Teacher4"}} (chat, line 965)
我想从中获取每个用户的状态。我正在尝试这个。
var j = (JSON.stringify(val.presenceStore.store));
var json = $.parseJSON(j);
$(json).each(function(i, val) {
$.each(val, function(k, v) {
console.log(k + " : " + v);
});
});
但是,它显示Rob7: [object Object]
。我是JSON的新手。谁能帮忙吗?
答案 0 :(得分:1)
您可以使用普通的JavaScript来实现,而无需jQuery。解析JSON之后,只需使用Object.entries( ... ).forEach
循环返回的值即可。
var data = {
"Rob7": {
"lastSeenAt": null,
"state": "online",
"userId": "Rob7"
},
"Techyudh_rob63": {
"lastSeenAt": "2018-07-18T17:45:56Z",
"state": "offline",
"userId": "Techyudh_rob63"
},
"Teacher4": {
"lastSeenAt": null,
"state": "online",
"userId": "Teacher4"
}
};
Object.entries(data).forEach(([k, v]) => {
console.log(k, v.state);
});
答案 1 :(得分:1)
这里的问题是您试图将object
附加到行中的string
:
console.log(k + " : " + v);
v
内的对象不能作为string
附加到控制台,因此这就是您得到的原因:R ob7: [object Object]
解决方案:
如果仅将键和值记录语句分开,它将很完美:
console.log(k + " : ");
console.log(v);
另一种选择是使用string
从v
对象取回JSON.stringify()
:
console.log(k + " : " + JSON.stringify(v));