如何在嵌套的有效负载中提取有效负载数据?

时间:2018-11-26 12:57:26

标签: node.js json node-red

我有几个入口有效载荷,例如

{"topic":"homepi/dht11repub", "payload": 
     "{ \"timestamp\": \"2018-11-26T08:50:55Z\", 
     \"Temperature\": 17.0, 
     \"humidity\": 92.0 }",  
  "qos":0,"retain":false,"_msgid":"b7af75be.485088"}

我想在节点红色函数中选择数据。我尝试过

var t =msg.payload
payload= t.payload
return msg

msg.payload[payload]

但不起作用。 有人知道我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

首先将传入消息传递通过JSON节点,以将其转换为JSON对象。

如果之后仍然需要它作为字符串,则可以将其传递到另一个JSON节点,该节点会将其转换回字符串。

答案 1 :(得分:0)

首先,您的有效载荷是一个json字符串。

您是否尝试过:

msg.payload = JSON.parse(msg.payload);

或者如果您只想返回温度作为输出:

const tmp  = JSON.parse(msg.payload);
return {payload: tmp.payload.Temperature};

您使用msg.payload [payload]编写的语法不正确,您应该编写msg.payload ['payload']。

在红色节点中,内容总是在消息msg的有效负载属性中返回。必须遵守这种格式。

[编辑] 我的错误:您的有效负载是json字符串,因此我修改了代码以反映这一点。