2017-07-06 2174 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