【问题标题】:JavaScript programming logic with JSON带有 JSON 的 JavaScript 编程逻辑
【发布时间】:2017-06-25 17:17:39
【问题描述】:

我有一个 JSON 对象如下:

{"_id":"594fe31b3e158c0e70c9bb3e","deviceid":"342","alldata":"{\"deviceid\":\"342\",\"voltage\":\"14\",\"current\":\"9\",\"power\":\"92\",\"status\":\"1\"}","receivedon":"2017/06/25 21:51:47","__v":0}

问题是,当我尝试输出obj.alldata.voltage 时,它只会给出空白;这让我认为obj.alldata 是一个字符串,而不是一个 JSON 对象。

当我打印obj.alldata 时,它会给出如下输出:

{"deviceid":"342","voltage":"14","current":"9","power":"92","status":"1"}

如何正确使用obj.receivedonobj.alldata.voltage

【问题讨论】:

  • 试试jsonifingobj.alldata
  • 你应该在JS中使用parse()函数,数据变成一个JavaScript对象。
  • “这让我认为 obj.alldata 是一个字符串,而不是一个 JSON 对象”。没有 JSON 对象之类的东西。您必须了解您正在处理的类型。你要么有一个对象,要么有一个字符串(可能包含也可能不包含JSON)。而且你只能访问对象的属性,不能访问字符串。

标签: javascript json logic


【解决方案1】:

删除alldata 值的引号,使其不会被视为字符串。

{ "_id": "594fe31b3e158c0e70c9bb3e", "deviceid": "342", "alldata": { "deviceid":"342","voltage":"14","current":"9","power":"92","status":"1"}, "receivedon": "2017/ 06 / 25 21: 51:47", "__v": 0 };

【讨论】:

    【解决方案2】:
    data = {
            "_id": "594fe31b3e158c0e70c9bb3e",
            "deviceid": "342",
            "alldata": {\"deviceid\":\"342\",\"voltage\":\"14\",\"current\":\"9\",\"power\":\"92\",\"status\":\"1\"}",
            "receivedon": "2017/06/25 21:51:47",
            "__v": 0
           }
    

    上面是一个hash或者一个js对象,除了键“alldata”的值是一个json,你需要解析那个json

    data.alldata = JSON.parse(data.alldata)

    在此之后,您的对象将如下所示

         { _id: "594fe31b3e158c0e70c9bb3e", 
           deviceid: "342", : 
           alldata: {
              deviceid: "342",
              voltage: "14",
              current: "9",
              power: "92",
              status: "1"
          }, 
         receivedon: "2017/06/25 21:51:47", __v: 0
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多