2017-07-06 2183 views
0

Noob问题node-red解析json字符串到msg.payload

我正在使用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"}]"

我试图写一个函数来去掉从这个字符串和输出它msg.payload"value":53800

下面我已经试过,但它返回

"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; 

回答

1

不要试图分割字符串得那样,它太容易出错,如果该值长度不断改变。

而不是通过功能节点前的节点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为所需的值。

+0

示例代码 – hardillb

+0

你好感谢你的答案固定错字我已经通过JSON节点通过它,让你现在建议的修改我收到一个msg.payload:未定义的错误?再次感谢。 – Michael

+0

编辑原来的问题,以显示你做了什么。 – hardillb