如何从对象获取值?

时间:2018-07-20 08:21:37

标签: javascript json string object

我有一个从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的新手。谁能帮忙吗?

2 个答案:

答案 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);

另一种选择是使用stringv对象取回JSON.stringify()

console.log(k + " : " + JSON.stringify(v));