NodeRedで、デバイスのJSON、XML形式のデータを処理する方法

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

NodeRedで、デバイスのJSON、XML形式のデータを処理する方法

前の記事

Node-Redを使用してさまざまなビジネスシナリオを処理すると、さまざまなデータ形式に遭遇することがよくあります。最も一般的なのはJSONデータ形式で、XML、Yaml、csv形式のデータ形式が続きます。これらはすべて、データ形式を少しParseして変換する必要があります。今日の記事では、JSONとXMLデータ形式を扱う方法を教えます。

Node-RedでJSON形式を変換する

Node-RedでJSONデータ形式を扱うのが最も簡単です。主な理由は、node-red自体がJava Script言語で書かれていることです。Java Scriptで最も一般的なのはJSONデータ形式です。JSONデータ形式の定義は簡単です。

# JSONデータの宣言
const person = {name 'fizzz' age 12}
#データを印刷
console.log person.name
#再割り当て
person.name = 'tom'

JSONデータ形式のOperationは非常に簡単です。

以下は、JSONデータのOperationを体験できるJSON変換のストリームです。

[{"id":"634256b7.2d6818","type":"inject","z":"64133d39.bb0394","name":"JSON String","topic":"","payload":"{"a":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":80,"wires":[["a2fe0fc8.095e1"]]},{"id":"a2fe0fc8.095e1","type":"json","z":"64133d39.bb0394","name":"","property":"payload","action":"","pretty":false,"x":270,"y":80,"wires":[["9a4ce2b8.47698"]]},{"id":"9a4ce2b8.47698","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":80,"wires":[]},{"id":"80032e2.7c92cd","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{"a":1}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":120,"wires":[["cd40a0f4.4f5ac"]]},{"id":"cd40a0f4.4f5ac","type":"json","z":"64133d39.bb0394","name":"","property":"payload","action":"","pretty":false,"x":270,"y":120,"wires":[["478b4106.4fd7c"]]},{"id":"478b4106.4fd7c","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":120,"wires":[]}]

効果は以下の通り。
NodeRedで、デバイスのJSON、XML形式のデータを処理する方法插图
JSONデータの処理は、主に文字列をJSONデータと相互変換できるJSONコアノードによって行われます。非常に便利。変換が失敗するとエラーになります。
JSONノードの詳細な構成は以下のとおりです。

入力パラメータ:
payload:object:オブジェクト|ストリング·ストリング
Java ScriptオブジェクトまたはJSON文字列。
schema:object
オプションのJSON Schemaオブジェクトはペイロードの検証に使用されます。msgが次のノードに送信される前に、このプロパティーは削除されます。

出力パラメータ:
payload:object:オブジェクト|ストリング·ストリング
入力がJSON文字列の場合、Java ScriptオブジェクトとしてParseしようとします。
入力がJava Scriptオブジェクトの場合、JSON文字列が作成されます。オプションでこのJSON文字列を整形できます。
schema:エラーの配列
JSONスキーマ検証に失敗した場合、catchノードはエラー配列を含むschemaErrorプロパティを持ちます。

Node-redでXML形式のデータを処理する

Ndoe-redでXMLデータを処理する場合、主なシナリオはJSONデータからXMLデータへの変換、またはXML形式のデータからJSON形式への変換です。主にXMLコアノードを使用し、その基盤はXML2 JSONライブラリを使用しています。

XMLこのノードに必要な入力は2つのパラメータです。

payload : object:オブジェクト|ストリング·ストリング
JavaScriptオブジェクトまたはXML文字列に設定します。

options:object
内部的に使用されるXML変換ライブラリにオプションを渡すことができます。詳細はXML2jsドキュメントを参照してください。

出力結果は
payload NetWorkerオブジェクト|ストリング·ストリング
入力が文字列の場合、XMLにParseしてJava Scriptオブジェクトを作成しようとします。
入力がJava Scriptオブジェクトの場合、XML文字列の構築を試みます。

また、XMLとオブジェクト間の変換を行う場合、デフォルトではXML属性が$という名前の属性に追加されます。_という名前のプロパティにテキストコンテンツを追加します。これらのアトリビュート名はノード設定で変更できます。

以下は、Node-RedがXMLデータとJSONデータ形式を変換する例です。

[{"id":"1b546d47.9474e3","type":"inject","z":"64133d39.bb0394","name":"XML String","topic":"","payload":"{"a":1}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":260,"wires":[["d72b2bfd.77d068"]]},{"id":"1adf407d.6c4fe","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":260,"wires":[]},{"id":"46638890.8ae758","type":"inject","z":"64133d39.bb0394","name":"Object","topic":"","payload":"{"note":{"$":{"priority":"high"},"to":["Nick"],"from":["Dave"],"heading":["Reminder"],"body":["Update the website"]}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":300,"wires":[["dae1d291.de0d2"]]},{"id":"6fefca67.3669e4","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":300,"wires":[]},{"id":"d72b2bfd.77d068","type":"template","z":"64133d39.bb0394","name":"","field":"payload","fieldType":"msg","format":"text","syntax":"plain","template":"<note priority="high">n  <to>Nick</to>n  <from>Dave</from>n  <heading>Reminder</heading>n  <body>Update the website</body>n</note>","output":"str","x":280,"y":260,"wires":[["1746464a.87aa4a"]]},{"id":"1746464a.87aa4a","type":"xml","z":"64133d39.bb0394","name":"","property":"payload","attr":"","chr":"","x":430,"y":260,"wires":[["1adf407d.6c4fe"]]},{"id":"dae1d291.de0d2","type":"xml","z":"64133d39.bb0394","name":"","property":"payload","attr":"","chr":"","x":250,"y":300,"wires":[["6fefca67.3669e4"]]}]

フロー図の概要
NodeRedで、デバイスのJSON、XML形式のデータを処理する方法插图1

Related Tags
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.