2017-07-06 3 views
0

Keine Fragenode-red Analyse einer JSON-Zeichenfolge zu msg.payload

Ich verwende die snmp-Funktion, um Daten über OID-Listen zu sammeln. Ich habe die Daten extrahiert und die JSON-Funktion verwendet, um die Daten in eine JSON-Zeichenfolge zu analysieren, die unten zu sehen ist.

msg.payload : string[81] "[{"oid":"1.3.6.1.4.1.38783.3.3.1.1.1.0","type":2,"value":53800,"tstr":"Integer"}]"

Ich versuche, eine Funktion zu schreiben, aus dieser Zeichenfolge und gibt es in msg.payload Streifen aus "value":53800.

Ich habe unten versucht, aber es gibt

"TypeError: Cannot assign to read only property '_msgid' of "value":53700,"tstr":"Integer"}]"

var msg = msg.payload; 
var value = msg.substr(49,62); 

return value; 

Antwort

1

Versuchen Sie nicht, und teilen Sie die Zeichenfolge so auf, es zu Fehlern zu anfällig ist, wenn der Wert Längen jemals ändern.

Führen Sie die Nachricht stattdessen über den JSON-Knoten vor dem Funktionsknoten aus.

enter image description here

Dies wird die Zeichenfolge analysieren und ein richtiges JSON-Objekt erzeugen.

Sie können dann Wertefeld zugreifen als solche:

var value = msg.payload[0].value; 
msg.payload = value; 
return msg; 

Die Cannot assign to read only property Fehler ist, weil Sie eine Zeichenfolge von der Funktion zurückgegeben. Sie müssen ein JSON-Objekt der Nachricht zurückgeben, keine Zeichenfolge. Mein Beispiel setzt die msg.payload auf den erforderlichen Wert.

+0

Tippfehler im Beispielcode behoben – hardillb

+0

Hallo danke für deine Antwort Ich habe es über den JSON-Knoten übergeben und die Änderungen vorgenommen, die du jetzt vorgeschlagen hast, ich erhalte eine msg.payload: undefinierter Fehler? Danke noch einmal. – Michael

+0

Bearbeiten Sie die ursprüngliche Frage, um genau zu zeigen, was Sie getan haben. – hardillb