node-red将json字符串解析为msg.payload

时间:2017-07-06 09:32:38

标签: javascript json string split node-red

Noob问题

我正在使用snmp函数通过oid列表收集数据。 我已经提取了数据并使用json函数将数据解析为下面的json字符串。

  

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

我正在尝试编写一个函数来从此字符串中删除"value":53800并将其输出到msg.payload

我在下面尝试过,但它会返回

  

" TypeError:无法分配给'_msgid'的只读属性"value":53700,"tstr":"Integer"}]"

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

return value;

1 个答案:

答案 0 :(得分:6)

不要尝试将字符串拆分为这样,如果值长度发生变化,它太容易出错。

而是在函数节点之前通过JSON节点运行消息。

enter image description here

这将解析字符串并生成适当的JSON对象。

然后您可以访问值字段:

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

Cannot assign to read only property错误是因为您从函数返回了一个字符串。您需要返回消息JSON对象而不是字符串。我的示例将msg.payload设置为所需的值。