2.8.9 「フォーマット変換」 を利用する

本チュートリアルでは、 IoT Connect Gateway の 「フォーマット変換」 機能に関する設定についてご説明いたします。

フォーマット変換

  1. 左側のメニューから 「フォーマット変換」 をクリックします。
  2. 「新規作成」 をクリックします。
フォーマット変換新規作成
  1. フォーマット変換 情報を入力します。
フォーマット変換設定1
  • テンプレート名(必須)

    テンプレート名を入力します。任意の分かりやすい名称をご入力ください。

  • 変換元形式(必須)

    CSV,JSONからの選択となります。

  • 説明

    任意項目です。用途に応じて分かりやすい内容をご入力ください。

  • 内容(必須)

    ここで設定ファイルの内容を記載します。Jinja2形式での記述となります。

    必要な情報の設定が終わりましたら、「作成」をクリックします。

  1. 「戻る」をクリックします。
フォーマット変換設定2
  1. 作成した フォーマット変換 のテンプレートが表示されていることを確認します。
フォーマット変換設定3
  1. 左側のメニューから「グループ」をクリックし、グループの一覧を表示させ、フォーマット変換を適用したいグループ名のリンクをクリックします。グループ一覧が表示されていない場合は、 こちら のグループ情報登録を参照し、グループを作成してください。
グループ選択
  1. 「スタンダード」、「イベント」、 「ファンクション」 から、 フォーマット変換 を適用したいサービスのタブをクリックし、「鉛筆」アイコンをクリックします。
フォーマット変換適用1
  1. フォーマット変換テンプレートから作成した任意のテンプレートを選択して「保存」をクリックします。
フォーマット変換適用2
  1. 左側のメニューから 「フォーマット変換」 をクリックし、「詳細」アイコンをクリックします。
フォーマット変換適用3
  1. 適用中転送先設定にフォーマット変換を適用したグループ名と転送先設定名が表示されていることを確認します。
フォーマット変換適用4

注釈

  • 対応プロトコルはHTTP、MQTTになります。
  • 変換元形式をCSVに指定した場合、curlコマンドでリクエストを送信する際は、--data-binaryのオプションを指定して下さい。
  • フォーマット変換のご利用データ確認は こちら をご参照ください。

フォーマット変換 テンプレートの考え方

1. 変換元形式がCSVの場合

・CSVファイル内の区切り文字はコンマ(,)を指定します。

CSVファイル内容例

10,20,100,200

・テンプレート内容のプリフィックスは環境変数で設定し、csv_data+配列番号の形で指定します。

テンプレート内容例

{{csv_data0}},{{csv_data1}},{{csv_data2}},{{csv_data3}}

・CSVファイルの内容が複数行の場合もテンプレート内で指定可能です。

テンプレート内容例

{{csv_data0_0}},{{csv_data0_1}},{{csv_data1_0}},{{csv_data2_1}}

2. 変換元形式がJSONの場合

・プリフィックスは環境変数で設定し、json_data+["文字列"]の形で指定します。

テンプレート内容例

{{json_data["hoge"]}}

・ネストされたJSONデータの場合もテンプレート内で指定可能です。

テンプレート内容例

{{json_data["hoge"]["fuga"]}}

フォーマット変換 利用例

1. CSVからJSONに変換

リクエスト内容(CSV)が下記の場合、

10,25
100,200

テンプレート内容(例)を下記のように設定します。

{
"degree" : {{csv_data0_0}},
"humidity" : {{csv_data0_1}},
"position" : {
    "x" : {{csv_data1_0}},
    "y" : {{csv_data1_1}}
    }
}

フォーマット変換後の結果が下記になります。

{
"degree" : 10,
"humidity" : 25,
"position" : {
    "x" : 100,
    "y" : 200
    }
}

2. JSONからCSVに変換

リクエスト内容(JSON)が下記の場合、

{
"degree" : 10,
"humidity" : 25,
"position" : {
    "x" : 100,
    "y" : 200
    }
}

テンプレート内容(例)を下記のように設定します。

Temperature {{ json_data["degree"] }}, Humidity {{ json_data["humidity"] }}, Position X {{ json_data["position"]["x"] }}, Position Y {{ json_data["position"]["y"] }}

フォーマット変換後の結果が下記になります。

Temperature 10, Humidity 25, Position X 100, Position Y 200

3. JSONからJSONに変換

リクエスト内容(JSON)が下記の場合、

{
"a" : 10,
"b" : 25,
"c" : {
    "x" : 100,
    "y" : 200
    }
}

テンプレート内容(例)を下記のように設定します。

{
"degree" : {{ json_data["a"] }},
"humidity" : {{ json_data["b"] }},
"position" : {
    "width" : {{ json_data["c"]["x"] }},
    "length" : {{ json_data["c"]["y"] }}
    }
}

フォーマット変換後の結果が下記になります。

{
"degree" : 10,
"humidity" : 25,
"position" : {
    "width" : 100,
    "length" : 200
    }
}