node-red 可以处理多少个嵌套选项?

How many nested options can node-red handle?

我想知道 node-red 中 json 格式的文件是否有最大寻址深度。

比如我有这样一条消息

{ topic: 'i/devices/i/up',
payload: 
 { payload: 'oo',
   port: 2,
   counter: 54,
   metadata: 
    [ { frequency: 868.3,
        datarate: 'SF12BW125',
        codingrate: '4/5',
        gateway_timestamp: 4201744244,
        channel: 1,
        server_time: '2016-07-01T09:50:39.725658999Z',
        rssi: -63,
        lsnr: 8.2,
        rfchain: 1,
        crc: 1,
        modulation: 'LORA',
        gateway_eui: 'oo',
        altitude: 0,
        longitude: 0,
        latitude: 0 } ] },
qos: 2,
retain: false,
_msgid: '81960b41.7e69f8',
metadata: <Buffer 00> }

如果我想获得 metadata 选项,我在节点红色的函数中解决它,比如

msg.payload.rssi = msg.payload.metadata["rssi"];
return msg;

但是,当我将调试功能附加到它时,我没有得到我想要的 rssi 值,我做错了什么?那个字段不能这样写吗?

提前致谢

问候

您访问的 JSON 对象的深度没有限制。

您错过了选择器中的数组索引。

您需要的是:

msg.payload.rssi = msg.payload.metadata[0].rssi;
return msg;

这是因为元数据对象是一个数组,因此可以包含元数据对象的多个实例。

另请注意,Node-RED 编辑器中的调试选项卡会截断较长的对象,如果您需要查看整个对象,最简单的方法是选中 "output to console" 框,整个消息将被打印出来也到控制台。