JavaScript访问JSON消息

JavaScript访问JSON消息,javascript,json,string,Javascript,Json,String,我在JavaScript中找到了很多访问JSON数据的方法,但似乎没有一种适合我: ws.onmessage = function(msg) { var stringMsg = msg.data.toString(); stringMsg = '\''+ stringMsg + '\'' console.log(stringMsg); var jsonMsg = JSON.parse(stringMsg); alert(jsonMsg.sensorID);

我在JavaScript中找到了很多访问JSON数据的方法,但似乎没有一种适合我:

ws.onmessage = function(msg) {
    var stringMsg = msg.data.toString();
    stringMsg = '\''+ stringMsg + '\''
    console.log(stringMsg);
    var jsonMsg = JSON.parse(stringMsg);
    alert(jsonMsg.sensorID);
    var outputtextarea = document.getElementById("outputtext");
    outputtextarea.value += (msg.data + "\n");
    outputtextarea.scrollTop = outputtextarea.scrollHeight;
}
控制台输出显示以下内容:

'{"sensorID": "kali1", "msgValue": "AA:AA:AA:AA:AA:AA:BLA!Box BLA WLAN 4000", "msgType": "unknown SSID"}'
解析器会指出这个错误:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
但是字符串似乎是有效的JSON,我就是这么想的,我在网上使用了所有的JSON验证器

我还尝试通过以下方式直接访问我的邮件:

alert(msg.sensorID)
alert(msg.data.sensorID)
这些弹出窗口只显示未定义的内容

另外,我不想将JSON转换成字符串并返回,这只是为了调试


您正在用单引号包装JSON。这使得它无效。不要那样做。

alter?那是什么?在解析字符串时,不应该在字符串周围加上引号。去掉字符串msg周围的引号。只需使用msg.data或msg.data.toString即可。它已经是一个有效的JSON字符串。我猜你的意思是alert而不是alter。据我所知,这就是一个有效的JSON字符串,不是吗?@Markus-不是。甚至一点也不。JSON文本中的字符串必须用not'分隔,您的JSON文本显然应该表示一个对象而不是字符串。当将JSON作为JavaScript字符串文本写入时,通常会用单引号将其括起来,但您没有这样做。它来自一个事件,而不是字符串文字。是的,你完全正确。在所有的字符串转换过程中,我都感到困惑。很抱歉问你这个问题。。。
stringMsg = '\''+ stringMsg + '\''