2016-09-03 4 views
0

Ich ziehe Daten aus dem Ding-Netzwerk über MQTT. Ich habe Probleme beim Parsen der Daten und in der Lage, jeden Teil der Daten in einer separaten Variablen zu sehen.Knoten-Rot - JSON Parsing funktioniert nicht

Node-Red Flow

Dies ist die gegebene Ausgabe vom Debug:

{"payload":"Gc4FaAAAFwBoAA==","port":223,"counter":4527,"dev_eui":"00DEAD00BEEF0002","metadata": 
[{"frequency":902.3,"datarate":"SF10BW125","codingrate":"4/5","gateway_timestamp":1299905004,"channel":0,"server_time":"2016-09- 

03T18:40:46.106713105Z","rssi":-31,"lsnr":12.3,"rfchain":0,"crc":1,"modulation": 
"LORA","gateway_eui":"1234567887654321","altitude":0,"longitude":0,"latitude":0} 
]} 

Der Code in parsingJson:

var data = JSON.parse(msg.payload); 
msg.payload={}; 
msg.payload = data.metadata.rssi; 
msg.payload = data.payload; 
msg.payload = data.payload.split(1,3); 

return msg; 
+0

Könnten Sie bitte den Fehler auch posten? – pinkpanther

+0

Was ist Ihre erwartete Ausgabe? – hardillb

+0

Sie weisen msg.payload drei verschiedene Dinge zu - nur die letzten davon können Auswirkungen haben. Wie dem auch sei, der Inhalt in msg.metadata befindet sich in einer Liste. Um auf den Inhalt des ersten Eintrags in der Liste zuzugreifen, müssen Sie die Liste indizieren, wie zum Beispiel 'msg.metadata [0] .rssi'. – barny

Antwort

0

First up, nicht die Mühe der Umwandlung String zu JSON im Funktionsknoten, gibt es einen bestimmten vorinstallierten Standard Knoten (mit dem Namen JSON-Knoten, dies wird Strings in JSON oder JSON zu Stings basierend auf Eingabe konvertieren) in der Palette, die das für Sie tun wird.

Zweitens Ihre Einstellung der msg.payload 3 mal, so dass Sie immer nur den letzten Teil bekommen werden.

Drittens data.metadata ist ein Array, also müssen Sie angeben, auf welchen Eintrag im Array Sie zugreifen möchten, z. data.metatdata[0].rssi

Sie haben nichts mit dem Funktionsausgang verbunden, also welche Ausgabe erwarten Sie?

+0

Ich versuche, bestimmte Teile des JSON zu nehmen und sie in eine MySQL DB einzufügen. Ich hatte gehofft, Variablen bestimmte Teile zuzuweisen und dann die Variablen in der SQL-Anweisung aufzurufen, aber mein erster Schritt war die Ausgabe der Daten. Also, wenn ich den Port und die Länge ausgeben möchte, wie würde ich das tun? – asobs

+0

Es hört sich an, als ob Sie mehr Schritt für Schritt Hilfe benötigen als SO für geeignet ist. Sie sollten dies im Node-RED-Forum fragen, wo Sie von jemandem geführt werden können. https://groups.google.com/forum/#!forum/node-red – hardillb