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 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注