2016-01-17 118 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())。

相關問題