2016-07-01 5 views
0

ノード赤で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> } 

私はメタデータオプションを取得するために弱々しい場合、私はしかし

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

のようなノード赤で関数内でそれに対処して、私はそれにデバッグ機能を添付するとき、私は間違って何をしたいのrssi値を取得していない?そのようなフィールドを扱うことはできませんか?事前に

おかげ

よろしく

答えて

0

あなたがアクセスしJSONオブジェクトの深さに制限はありません。

セレクタの配列インデックスが欠落しています。あなたが必要なもの

は次のとおりです。

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

メタデータオブジェクトは、そのメタデータオブジェクトの複数のインスタンスを保持できる配列であるためです。

ノードREDエディタのデバッグタブは長いオブジェクトを切り捨てるので、オブジェクト全体を表示する必要がある場合は、「コンソールへの出力」ボックスをチェックするのが最も簡単で、メッセージ全体が表示されます。コンソールも同様です。

+0

メタデータの要素が複数ある場合は、イテレータを作成する必要があります。イテレータの要素数を知ることは可能でしょうか? – ndarkness

+0

はい、forループを記述し、 'msg.payload.metadata.length'を使って配列の要素数を知ることができます – hardillb

関連する問題