node - red 에서 yaml, csv 형식의 데이터 형식을 처리합니다.

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和검색引流。

node - red 에서 yaml, csv 형식의 데이터 형식을 처리합니다.

前言

在前面的章节中我介绍了如何在Node-RED中处理json与xml格式的데이터。但随后又有读者向我询问,
在node-red中如何处理yaml格式的데이터,以及csv格式的데이터。yaml格式的데이터是随着这几年云原生而大行其道的데이터格式。因为不需要中括号,格式优雅,而收到开发人员的喜爱。云原生中的资源定义都可以使用yaml文件来定义。CSV格式是实施分隔的文本文件。可以与excel中的데이터互相转化。

YAML格式的데이터处理

处理yaml格式데이터主要使用的是yaml节点。该节点可以实现 在YAML格式的문자串及其JavaScript对象即json데이터格式之间相互转换。

输入:
payload object | 문자串
JavaScript 对象或YAML문자串。

输出:
payload object | 문자串
● 如果输入是YAML문자串,它将尝试将其解析为JavaScript对象。
● 如果输入是JavaScript对象,它将创建一个YAML문자串。

以下是一个示例:
可以将yaml的문자串转换为json对象

如문자串变量 {"a":1, "b":[1,2,3]} 转换成yaml 就变成了

a: 1
b: 
  - 1
  - 2
  - 3
node - red 에서 yaml, csv 형식의 데이터 형식을 처리합니다.插图

完整的데이터流

[{"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格式,一种是要输出CSV格式的데이터,如,每行以逗号隔开。CSV格式的데이터处理离不开node-red自带的csv节点。

在CSV格式的문자串及其JavaScript对象表示形式之间进行相互转换。

输入:

payload object | 数组 | 문자串

JavaScript对象,数组或CSV문자串。

输出:

payload object | 数组 | 문자串

  • 如果输入是문자串,它将尝试将其解析为CSV,并为每行创建键/值对的JavaScript对象。然后该节点将为每行发送一条消息,或者发送一条包含对象数组的消息。
  • 如果输入是JavaScript对象,它将尝试构建CSV문자串。
  • 如果输入是简单值的数组,则将构建单行CSV문자串。
  • 如果输入是数组数组或对象数组,则会创建多行CSV문자串。

列模板可以包含列名称的有序列表。将CSV转换为对象时,列名将用作属性名称。或者也可以从CSV的第一行中获取列名称。

转换为CSV时,列模板用于标识从对象中提取的属性以及提取的顺序。

如果输入是数组,则列模板仅用于有选择地生成一行列标题。

只要正确设置parts属性,该节点就可以接受多部分输入。

如果输出多个消息,则将设置其parts属性并形成完整的消息序列。

注意:列模板必须用逗号分隔,即使데이터中已有了其他分隔符。

CSV 节点的配置页面

node - red 에서 yaml, csv 형식의 데이터 형식을 처리합니다.插图1

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":

cs v 에서 j son 로 변환

또한 CS V 노 드는 CS V 형 식의 데이터를 J SON 데이터 로 변환 할 수 있습니다 .
이것은 CS V 형 식의 데이터 입니다 .

a , b , c
80,18,2
52,36,10
91,18,61
32,47,65

CS V 노 드를 통해 표준 J SON 형 식으로 변환 할 수 있습니다 .

node - red 에서 yaml, csv 형식의 데이터 형식을 처리합니다.插图2
[
    [ 잡 담 ] [ 잡 담 ] [ 잡 담 ] [ 잡 담 ]
    [ 잡 담 ]
    [ 잡 담 ] [ 잡 담 ] [ 잡 담 ] [ 잡 담 ]
    [ 잡 담 ] [ 잡 담 ] [ 잡 담 ] [ 잡 담 ]
]
相关标签
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 검증和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

您的邮箱주소不会被公开。 必填项已用 * 标注