2016-01-17 179 views
0

我将简单的JSON字符串{"TMP":"-15.5826"}发布到Web客户端。信息出现在message.payloadString我可以在html中打印它,但我无法用JSON.parse()解析消息。 objdata是未定义的。这是主要问题,要解决这个问题我首先使用JSON.stringify()这个时候解析消息但是data仍然是未定义的。看起来stringify会添加额外的双引号并且使json字符串无效。 mqttws31.js是最新的,经纪人是蚊子1.4.4。我应该怎么做才能让JSON.parse()工作?PAHO mqtt客户端(mqttws31.js)和JSON.parse()不起作用

出版是通过mosquitto命令:mosquitto_pub -t /main/SENSOR -m {"TMP":"-15.5826"}

function onMessageArrived(message) { 

    var topic = message.destinationName; 
    var payload = message.payloadString; 

    $('#ws').prepend('<li class=messagelist>' + topic + ' = ' + payload + '</li>'); 

    var jsonString = JSON.stringify(payload); 

    obj = JSON.parse(jsonString); //parse with extra double quotes 
    //obj = JSON.parse(payload); //does not parse 

    var data = obj.TMP; 
    alert(data); 
}; 
+0

这是什么结果:'console.log(typeof payload,payload)'?字符串化和随后的解析没有任何意义。 – robertklep

+0

字符串{TMP:15.5826} – thesubscriber

+0

缺少引号。所以我出版了{\“TMP \”:“15.5826”} ..现在它的工作..非常感谢你。 – thesubscriber

回答

0

您需要防止你的shell从发布过程中去除双引号,用周围的JSON字符串单引号:

mosquitto_pub -t /main/SENSOR -m '{"TMP":"-15.5826"}' 

当这完成后,您可以使用JSON.parse(payload)(不需要JSON.stringify())。

相关问题