2016-01-17 2 views
0

Я публикую простую строку JSON {"TMP":"-15.5826"} веб-клиенту. Сообщение появляется в message.payloadString Я могу распечатать его в html, но я не смог разобрать сообщение с JSON.parse(). obj и data не определено .. это основная проблема, чтобы решить эту проблему. Сначала я использовал JSON.stringify(), на этот раз разобранное сообщение, но data по-прежнему не определено. Кажется, stringify добавляет дополнительные двойные кавычки и отменяет строку json. mqttws31.js - последний, брокер - москит 1.4.4. Что делать, чтобы получить JSON.parse()?PAHO mqtt client (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 полезная нагрузка, полезная нагрузка)'? Строгание и последующий синтаксический анализ не имеют смысла. – robertklep

+0

строка {TMP: 15.5826} – thesubscriber

+0

цитаты отсутствуют. поэтому я опубликовал {\ "TMP \": "15.5826"} .. теперь он работает .. вас очень сильно. – thesubscriber

ответ

0

Вы должны предотвратить вашу оболочку от удаления двойных кавычек во время публикации, используя одинарные кавычки строки JSON:

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

Когда это сделано, вы можете использовать JSON.parse(payload) (нет необходимости в JSON.stringify()).