【发布时间】:2018-07-20 08:21:37
【问题描述】:
我有一个从 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 新手。有人可以帮忙吗?
【问题讨论】:
-
console.log(k+" : "+ JSON.stringify(v));或将逗号放在控制台中。
-
首先,请注意,您用于检索值的是一个对象,而不是 JSON。其次,您不想为此使用 jQuery。 jQuery 主要用作 DOM 操作工具。要读取数据结构,例如本例中的对象,您需要普通的旧 JS。我修改了标题和标签
-
您编写控制台消息的方式是创建一个字符串(文本)。所以浏览器正在做它的版本,打印出文本等价物是 JSON(JavaScript OBJECT 表示法)。但是浏览器非常聪明,如果您只是登录而没有“添加”(技术上连接)“:”的文本,它应该打印出实际的对象,而不仅仅是 [object object] 的字符串表示。正如 Sumesh 指出的那样,如果您的日志是 console.log(k, v) 您调用的是实际对象而不是字符串表示
-
你为什么要把一个对象变成 JSON,然后再把那个 JSON 变成一个对象?在您的代码中,
var json == val.presenceStore.store- 您已序列化,然后立即反序列化。 -
@Archer 可能是clone routine
标签: javascript json string object