CSVパーサーを使ってCSVテキストをJSONオブジェクトにパースする

フローでは、イベントやアクションは、ファイルやその他のコンテンツからカンマ区切り値(CSV)を返すことができます。 フローに CSV パーサー・ノードを追加して、CSV データ文字列を JSON オブジェクトに変換します。 その後、JSONオブジェクトを使用して、CSVデータをフロー内の後続のアクションにマッピングすることができます。

最初に考慮すべきこと

イベントまたはアクションが返すCSVデータはプレーンテキストでなければならず、表形式の1つまたは複数のデータレコードを含むことができる。 データ・フィールドの区切り文字として使用できるのは、カンマ(, )のみである。 そのため、フィールドの値にカンマが含まれる場合は、その値をダブルクォーテーション("" )で囲む必要があります。

CSVパーサーが生成するスキーマは、中括弧 {} で囲まれた、カンマで区切られたキーと値のペアの標準的なセットとしてフォーマットされます。 キーは文字列として定義され、その値は以下の有効なJSONデータ型のいずれかである:文字列、数値、オブジェクト、配列、ブール値、またはnull。 これらのキーが生成されると、後続のアクションで Insert a mapping マッピングアイコンの挿入

解析されるデータの定義と有効なJSONスキーマの生成

次の例は、Box Retrieve file アクションを使用して、内容を取得して解析したいCSVファイルの識別子を指定する、マルチノードフローのセクションを示しています。

図1: ファイル・アクション・フィールドの取得
ボックス ファイルの取得 アクション・フィールド

CSV データを後続のアクションでマッピングできるようにするには、アクションの前に CSV パーサー・ノードを挿入し、CSV パーサー・ノードを使用して解析したいデータを定義し、有効な JSON スキーマを生成します。

CSV パーサー・ノードを挿入して設定するには、以下の手順を実行します。

  1. (+)アイコンをクリックし、 ツールボックスタブに移動し、 CSVパーサーをクリックします。
    図2: ツールボックスタブからCSVパーサーを選択する
    ツールボックスタブからCSVパーサーを選択する
  2. CSV入力フィールドを使用して、前のアクションまたはイベントのどのデータを解析するかを指定します。 利用可能な入力のリストに表示されているフィールドにマッピングすることができます( マッピングの挿入 マッピングアイコンの挿入 をクリックしてアクセスできます)。 通常、このデータはCSVファイルの内容や、テキスト本文の中にある他のCSVコンテンツである。 次の例は、Box内のファイルの内容にデータをマッピングする方法を示している。
    図3: CSV入力フィールド
    CSV入力フィールド
  3. CSV Parsing Options and Data Schema ] セクションを展開し、[ Example CSV] フィールドを使用して、CSV コンテンツのサンプルを示すプレーン・テキスト・データを指定します。

    次の例は、 IBM API Connect® ManagementサーバーからBoxにエクスポートされたCSVファイルのサンプルデータです。 CSVファイルには、Analyticsダッシュボードの1つに関連付けられたAPIイベント・データが含まれています。 この例では、GmailやSlackを使って、APIやアプリケーションに関する適切な分析情報を幹部に送信できるように、このデータを解析したい。

    図4: CSVフィールドの例
    CSVフィールドの例

    CSVコンテンツから1行または複数行を選択してコピーし、「 CSVの例」 フィールドに貼り付けることができます。 CSVコンテンツに、 App Connect が生成するJSONスキーマのキーとして定義したいカラムヘッダが含まれている場合は、必ずヘッダ行を選択に含めてください。 スキーマのCSV形式を分析するために使用されるのは、最初の行だけである。 サンプル CSV フィールドには最大 16,000 文字を入力できます。

  4. サンプル CSV に CSV ヘッダーが含まれている場合、 CSV データの最初の行がヘッダーであるチェックボックスを選択し、生成されるスキーマで列ヘッダーをキーとして解析する必要があることを示します。
    図 5. CSVデータの1行目はヘッダーチェックボックス
    CSVデータの1行目をヘッダーにするチェックボックス
  5. サンプルCSVをJSONオブジェクトに変換するには、 Generate Schemaをクリックします。 結果は JSONスキーマ ・フィールドで見ることができる。
    CSVパーサーノードを使ったフロー:生成されたJSONスキーマ
    • CSVデータの最初の行がヘッダーである 」チェックボックスを選択した場合、定義された列のヘッダーは、後でマッピングできるキーとして解析されます。
    • このチェックボックスを選択しなかった場合、 field1, field2, ..., fieldN というラベルが貼られた一般的な一連のキーが生成されて使用される。 必要に応じて、これらの汎用キーを上書きして代替のヘッダー文字列を指定することができる。

    スキーマ生成ステップをバイパスして、有効なスキーマを JSONスキーマフィールドに直接入力することもできます。 プロパティのtype属性の値を更新することで、キーのデータ型を変更することもできます。 例えば、 "type": "string" (以下の例)を "type": "number" に変更することができます。

    
        ...
        "properties": {
          "bytes_received": {
            <strong>"type": "string"</strong>,
            "minLength": 1
          },
        ...
    

解析されたデータの処理方法

CSVパーサー・ノードからの出力は配列です。 したがって、この出力をフロー内の後続ノードで使用するには、通常、CSVパーサー・ノードの後に For each ノードを追加して、配列を繰り返し処理する。 あるいは、JSONataを使って配列データを操作することもできる。