我该如何解析这些数据?

时间:2017-06-09 15:41:54

标签: javascript json getelementbyid

我从WebSocket资料中收到这样的信息:

{"sensorValue":{"id":5168,"roadStationId":23401,"name":"OHITUKSET_5MIN_LIUKUVA_SUUNTA2_MS2","oldName":"ohitukset_5min_liukuva_suunta2_MS2","shortName":"MTila2","sensorValue":69,"sensorUnit":"***"}}
{"sensorValue":{"id":5125,"roadStationId":23401,"name":"KESKINOPEUS_5MIN_LIUKUVA_SUUNTA2","oldName":"averageSpeed2","shortName":"km/h2","sensorValue":83,"sensorUnit":"km/h"}}

我想要做的是获取name和sensorValue的值。到目前为止,我有这样的代码:

function connect() {
     var url = "ws://...";
     var socket = new WebSocket(url);
     socket.onopen = function (event) {
         console.info('Socket is open');
     }
     socket.onmessage = function(message) {
         addMessage(message);
     };
}


function addMessage(message) {
     var myJSON = JSON.stringify(message.data);
     var obj = JSON.parse(myJSON);
     document.getElementById("sensorValue").innerHTML = obj.sensorValue;
}

现在,无论我做什么,我都会得到这个:

  

未捕获的TypeError:无法设置null的“innerHTML”属性。

我已经尝试了几个getElementryById的网络教程,它们的工作正常。

为什么我收到此错误?

1 个答案:

答案 0 :(得分:1)

我认为你把两件事混在一起:

  1. 您有JSON格式的响应数据,并且您希望从中读取特定值。您可以通过使用点运算符引用所需字段来执行此操作。 例如:object.fieldName;(在您的情况下为obj.sensorValue

  2. 您希望使用以下方法在HTML页面中显示特定值: document.getElementById("sensorValue").innerHTML=value_to_display。 为此,您需要一个ID为“sensorValue”的HTML元素。你得到的错误告诉你,没有这样的元素。 例如,您可以在页面中添加<div id="sensorValue"></div>