访问json对象中的元素

时间:2019-04-26 05:11:32

标签: javascript json angular typescript

我有几个问题如何访问json对象,但是我的问题略有不同。我的json对象看起来有点不同

这是我的json对象

data = ["data","{\"id\":\"fd00::212:4b00:197b:274a\",\"counter\":30,\"temperature\":2622,\"humidity\":4617,\"battery\":2828,\"timestamp\":\"04:48:50.816305\",\"date\":\"2019-04-26\",\"deviceType\":\"milo\"}"]

我要访问此json对象中的元素

  realTime() {
    this.webSocket.connect()
      .subscribe(
        (data:any) => {
          console.log(data)
          console.log(data[1].temperature)
          this.device_id = data.id
          this.temperature = data.temperature
          this.humidity = data.humidity
        })

  }

我已尝试但无法正确访问元素

2 个答案:

答案 0 :(得分:1)

data[1]包含一个JSON字符串,而不是一个对象,因此您必须使用JSON.parse方法对其进行解析。

console.log(JSON.parse(data[1]).temperature);

最终代码:

realTime() {
    this.webSocket.connect()
      .subscribe((data:any[]) => {
         console.log(data)
         let data1 = JSON.parse(data[1]);
         console.log(data1.temperature)
         this.device_id = data1.id
         this.temperature = data1.temperature
         this.humidity = data1.humidity
      })

}

答案 1 :(得分:0)

JSON可用于键值对,因此请尝试使用以下解决方案来实现。

realTime() {
    this.webSocket.connect()
      .subscribe(
        (data:any) => {
          console.log(data);
          console.log(data[1]["temperature"]);
          this.device_id = data[1]["id"];
          this.temperature = data[1]["temperature"];
          this.humidity = data[1]["humidity"];
        })

  }