Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

node-red parsing a json string to msg.payload

Noob question

I am using the snmp function to collect data via oid lists. I have extracted the data and used the json function to parse the data into a json string seen below.

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

I am trying to write a function to strip out "value":53800 from this string and output it in msg.payload.

I have tried below but it returns

"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;
like image 601
Michael Avatar asked Jan 04 '23 18:01

Michael


1 Answers

Don't try and split the string up like that, it's too prone to errors if the value lengths ever change.

Instead run the message through the JSON node before the function node.

enter image description here

This will parse the string and generate a proper JSON object.

You can then access value field as such:

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

The Cannot assign to read only property error is because you returned a string from the function. You need to return a message JSON object not a string. My example sets the msg.payload to the required value.

like image 163
hardillb Avatar answered Jan 06 '23 13:01

hardillb