UiPathにて、要素数・深さが一定のJSON文字列を取込み、各種Json変数を通してデータテーブルに変換し、CSVとして出力するワークフローを作成する。
事前準備
「JSON 配列を逆シリアル化」アクティビティやJArray変数などを使うため、UiPath.WebAPI.Activities
パッケージが必要になる。標準ではインストールされていないので、「パッケージを管理」から探してインストールしよう。
また、今回は以下のJSON配列のテキストファイルをインプットとして使用した。
実装
こちらが今回のワークフロー全体。
以下でポイントについて解説していく。
① 「JSON 配列を逆シリアル化」
UiPath.WebAPI.Activities
に含まれるアクティビティ。
設定はシンプルで、「入力」にJSONフォーマットへ沿った文字列(String
型変数)を渡すと、JArray
型変数に変換してくれる。
② 「繰り返し (コレクションの各要素)」:currentJProperty
次のコレクション内の各要素:jsonAry(0).Children(Of JProperty)()
ここではJSONの要素に対応してデータテーブルの列名を定義するため、「JSON 配列を逆シリアル化」が出力したJArray
型変数のうち1行目のみを取得し、プロパティの名前を読み取って空のデータテーブルに列追加している。
③ 「繰り返し (コレクションの各要素)」currentJToken
ここからはデータテーブルに行を追加していく。繰り返しが2重になっており、外側のループはJSON配列、内側のループはJSONの各要素に対応している。
はじめにDataTableのNewRow
メソッドを使って空の行変数を作成。次に列名を定義した時と同様にJSONのプロパティで繰り返しをかけ、プロパティ名と同じ列名(rowTemp(currentJProperty.Name)
)にプロパティの値(currentJProperty.Value
)を追加していく。最後に、行変数をデータテーブルに追加。これをJSON配列ごとに繰り返す。
出力結果
こちらが出力したCSVの内容。無事にJSONをCSVとして変換できている。
参考
動作環境
UiPath.WebAPI.Activity v1.21.1
UiPath.System.Activity v24.10.7