前の記事
前の章では、Node-REDでJSON形式とXML形式のデータを扱う方法を説明しました。しかし、読者は私に尋ねました。
Node-redでyaml形式のデータとcsv形式のデータを処理する方法。Yaml形式のデータは、近年クラウドネイティブとして普及しているデータ形式です。中括弧が不要なため、エレガントなフォーマットで、開発者に愛されています。クラウドネイティブのアセット定義はすべてyamlファイルを使用して定義できます。CSV形式は、区切りを実装したテキストファイルです。Excelでデータを変換できます。
YAML形式のデータ処理
処理の仕方yamlフォーマットデータは主にyamlノードを使用する。このノードは、YAML形式の文字列とJava Scriptオブジェクト(jsonデータフォーマット)間の変換を実装できます。
入力:
ペイロードオブジェクト|ストリング·ストリング
JavaScriptオブジェクトまたはY文字列。
輸出品:
ペイロードオブジェクト|ストリング·ストリング
入力がYAML文字列の場合、Java Scriptオブジェクトとして解析しようとします。
入力がJava Scriptオブジェクトの場合、YAML文字列が作成されます。
以下に例を示します。
yamlの文字列をjsonオブジェクトに変換できます。
文字列の変数 {"a":1, "b":[1,2,3]} yamlに変換すると
a: 1
b:
- 1
- 2
- 3
完全なデータフロー
[{"id":"f231967.0251a68","type":"inject","z":"64133d39.bb0394","name":"YAML String","topic":"","payload":"{\"a\":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":320,"wires":[["a0110756.ecfa48"]]},
{"id":"8f8f31b7.1f916","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":320,"wires":[]},
{"id":"5138ba3.c972444","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{\"a\":1, \"b\":[1,2,3]}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":360,"wires":[["2fa653cc.60d3dc"]]},
{"id":"50f2f4c.4a6e60c","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":360,"wires":[]},
{"id":"a0110756.ecfa48","type":"template","z":"64133d39.bb0394","name":"","field":"payload","fieldType":"msg","format":"yaml","syntax":"plain","template":"a: 1\nb:\n - 1\n - 2\n - 3","output":"str","x":280,"y":320,"wires":[["104b80e2.51068f"]]},
{"id":"2fa653cc.60d3dc","type":"yaml","z":"64133d39.bb0394","property":"payload","name":"","x":250,"y":360,"wires":[["50f2f4c.4a6e60c"]]},
{"id":"104b80e2.51068f","type":"yaml","z":"64133d39.bb0394","property":"payload","name":"","x":430,"y":320,"wires":[["8f8f31b7.1f916"]]}]CSV形式のデータ処理
CSV形式の場合、1つはCSV形式のデータを出力する方法です。例えば、各行をカンマで区切っています。CSV形式のデータ処理は、node-redのcsvノードと不可分です。
CSV形式の文字列とそのJava Scriptオブジェクト表現の間で相互変換します。
入力:
payloadオブジェクトオブジェクト|グループのメンバー|ストリング·ストリング
Java Scriptオブジェクト、配列またはCSV文字列。
輸出品:
payloadオブジェクトオブジェクト|グループのメンバー|ストリング·ストリング
- 入力が文字列の場合、CSVに解析して、各行のキー/値のペアのJava Scriptオブジェクトを作成しようとします。次に、ノードは各行に1つのメッセージを送信するか、オブジェクトの配列を含むメッセージを送信する。
- 入力がJava Scriptオブジェクトの場合、CSV文字列の構築を試みます。
- 入力が単純な値の配列の場合、1行のCSV文字列が作成されます。
- 入力が配列配列配列またはオブジェクト配列の場合、複数行のCSV文字列が作成されます。
列テンプレートには、列名の順序付けられたリストを含めることができます。CSVをオブジェクトに変換する場合、カラム名は属性名として使用されます。または、CSVの最初の行からカラム名を取得することもできます。
CSVに変換する場合、列テンプレートはオブジェクトから抽出される属性と抽出される順序を識別するために使用されます。
入力が配列の場合、列テンプレートは選択的に列ヘッダを生成するためにのみ使用されます。
正しく設定するとpartsこのノードは複数の入力を受け入れることができます。
複数のメッセージが出力される場合は、設定されますparts完全なメッセージシーケンスを形成します。
注意点:データに他の区切り文字がある場合でも、列テンプレートはカンマで区切る必要があります。
CSVノードのページ

csvノードはJSONデータを文字列に変換できます。
例えば、
{
a: 10,
b: 20,
c: 30
}CSVで変換できます。"10,20,30\n"
グループを変換することもできます。
以下のように、
[
{ a: 80, b: 18, c: 2},
{ a: 52, b: 36, c: 10},
{ a: 91, b: 18, c: 61},
{ a: 32, b: 47, c: 65},
]CSVで変換できます。
a,b,c
80,18,2
52,36,10
91,18,61
32,47,65ストリームコードの完全な例
[{"id":"457d9ad6.b737b4","type":"inject","z":"64133d39.bb0394","name":"single","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":640,"wires":[["1e05fafd.887b05"]]},{"id":"1e05fafd.887b05","type":"change","z":"64133d39.bb0394","name":"Generate single payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{ \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":640,"wires":[["e9546682.b39898"]]},
{"id":"e9546682.b39898","type":"csv","z":"64133d39.bb0394","name":"","sep":",","hdrin":"","hdrout":false,"multi":"one","ret":"\\n","temp":"a,b,c","skip":"0","x":450,"y":640,"wires":[["f83ad3b0.78d32"]]},
{"id":"f83ad3b0.78d32","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":640,"wires":[]},
{"id":"ae242f2c.d1c8a","type":"inject","z":"64133d39.bb0394","name":"array","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":700,"wires":[["7535f521.4a88bc"]]},
{"id":"7535f521.4a88bc","type":"change","z":"64133d39.bb0394","name":"Generate array payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"[\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())},\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())},\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())},\t { \"a\":$floor(100*$random()),\"b\":$floor(100*$random()),\"c\":$floor(100*$random())}\t]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":700,"wires":[["f4e0465f.ef0338"]]},
{"id":"f4e0465f.ef0338","type":"csv","z":"64133d39.bb0394","name":"","sep":",","hdrin":"","hdrout":true,"multi":"one","ret":"\\n","temp":"a,b,c","skip":"0","x":450,"y":700,"wires":[["6eb67fdf.58626"]]},
{"id":"6eb67fdf.58626","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":700,"wires":[]}]JSONからCSVへ
さらに、CSVノードはCSV形式のデータをJSONデータに変換することもできます。
これはCSV形式のデータです
a,b,c
80,18,2
52,36,10
91,18,61
32,47,65CSVノードを使用すると、標準のJSON形式に変換できます。

[
{ a: 80, b: 18, c: 2},
{ a: 52, b: 36, c: 10},
{ a: 91, b: 18, c: 61},
{ a: 32, b: 47, c: 65},
]
发表回复