【问题标题】:How to fetch values from object?如何从对象中获取值?
【发布时间】: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


【解决方案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);
});

【讨论】:

    【解决方案2】:

    您的问题是您试图将object 附加到行中的string

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

    v 中的对象不能作为string 附加到控制台,所以这就是你得到的原因:Rob7: [object Object]

    解决方案:

    如果您只是将键和值日志语句分开,它将完美地工作:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-21
      • 2020-02-17
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多