在node-red中处理yaml,csvformat的data format

freefree技术Resources

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

在node-red中处理yaml,csvformat的data format缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  1. 1. 前言
  2. 2. YAMLformat的data处理
  3. 3. CSVformat的data处理
  4. 4. csv转json

前言

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

YAMLformat的data处理

处理yamlformatdata主要使用的是yaml节点。该节点可以实现 在YAMLformat的字符串及其JavaScript对象即jsondata format之间相互转换。

输入:
payload object | 字符串
JavaScript 对象或YAML字符串。

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

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

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

a: 1
b: 
  - 1
  - 2
  - 3
在node-red中处理yaml,csvformat的data format插图

完整的data流

[{"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"]]}]

CSVformat的data处理

对于CSVformat,一种是要输出CSVformat的data,如,每行以逗号隔开。CSVformat的data处理离不开node-red自带的csv节点。

在CSVformat的字符串及其JavaScript对象表示形式之间进行相互转换。

输入:

payload object | 数组 | 字符串

JavaScript对象,数组或CSV字符串。

输出:

payload object | 数组 | 字符串

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

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

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

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

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

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

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

CSV 节点的配置页面

在node-red中处理yaml,csvformat的data format插图1

csv节点可以将jsondata format,转为为字符串。

{
   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":[]}]

csv转json

除此之外CSV节点还可以将CSVformat的data 进行转化,转成成JSONdata。
这是一个CSVformat的data

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

通过CSV节点,它可以转化为标准的JSONformat

在node-red中处理yaml,csvformat的data format插图2
[
    { a: 80, b: 18, c: 2},
    { a: 52, b: 36, c: 10},
    { a: 91, b: 18, c: 61},
    { a: 32, b: 47, c: 65},
]
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbus通信协议技术社区 Category Node-RED 字数 5128 字 · 阅读约 13 分钟 更新 2026-07-01 永久链接 https://www.modbus.cn/11651.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时通信debug、register读写、线圈控制、data监控和message分析。 无需安装,微信Search「Modbus DebuggingAssistant」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
RelatedTags
把这篇Resources用于真实项目?

进入Tools中心进行messageParse、CRC verification和设备debug,或Submit requirements获取选型与接入建议。

工程师member

把这篇文章变成可执行的debugResources

开通后可使用高级messageParse、Resources包Download、Code Example、工程案例和优先Technical Support,适合真实项目交付。

高级Tools不限次
Resources包与代码包
Complete Engineering Case Library
优先Technical Support入口

发表回复

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