0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power Automate】クラウドフローで簡単にJSONのキーを取得する方法

Last updated at Posted at 2025-03-13

JSONデータを扱う際、特定階層のキーのみを取得したいケースは少なくありません。本記事では、Power Automateを使ってJSONデータからキーを簡単に抽出する方法を紹介します。全角文字や記号を含むキーでも問題なく抽出できる手法です。

大まかな流れ

  1. キーを取り出したい階層のCSVテーブルの作成
  2. split関数とdecodeUriComponent関数で、改行コードを元にデータを行ごとに分割
  3. 2の出力の一番最初の要素を、split関数を使ってカンマ区切りで取り出す

image.png

具体的な手順

今回は以下のJSONを使ってキーだけを抽出していきます。

例題用JSON
{
  "名": "太郎",
  "姓": "山田",
  "性別": "男",
  "都道府県": "東京都",
  "市区町村": "千代田区",
  "番地以下・建物名": "千代田3-1-1"
}

1. キーを取り出したい階層のCSVテーブルの作成

CSVテーブルの作成」アクションを使用して、キーを取り出したい階層をCSV形式に変換します。

image.png

このアクションにより、キーが1行目、値が2行目に格納されたCSVテーブルが生成されます。

取り出したい階層が配列になっていない場合は、変換したいオブジェクト型をarray関数で配列に変換してからコネクタの処理を行いましょう。

2. 改行コードを元に行で分割

作成」アクションを追加し、入力に以下の式を設定します:

split(body('CSV_テーブルの作成'), decodeUriComponent('%0D%0A'))

スクリーンショット 2025-03-13 7.52.11.png

ここでのポイント

  • decodeUriComponent('%0D%0A')は改行コード\r\nのURLエンコード表現です
  • この改行コードを区切り文字としてsplit関数で分割しています

この処理により、CSVテーブルが以下の構造の配列に変換されます。

  • 1要素目:キーの羅列(カンマ区切り)
  • 2要素目:値の羅列(カンマ区切り)

3. キー一覧の抽出

続いて、もう一つ「作成」アクションを追加し、valueに以下の式を設定します:

split(first(outputs('作成_-_CSVの全行')), ',')

image.png

このステップでは:

  1. 手順2で作成した配列の最初の要素(キーの羅列が格納された文字列)をfirst関数で取得
  2. それをカンマで区切り(split)、各キーが独立して格納された配列を生成

これで、各JSONキーを個別に格納した配列が完成しました。

[
  "名",
  "姓",
  "性別",
  "都道府県",
  "市区町村",
  "番地以下・建物名"
]

配列なのでfor eachなどのループアクションで簡単に処理できます。

[補足]うまくいかなかった方法

他の方の記事で紹介されていたXMLを活用する方法も試しましたが、いくつかの問題がありました。

xml関数でJSONデータをXML形式に変換する際、全角記号が含まれていると自動的にUnicodeエスケープシーケンスに置き換えられてしまいます。

変換前(JSON)
{ 
    "番地以下・建物名": "千代田3-1-1" 
}
変換後(XML)
<番地以下_x30FB_建物名>
    千代田3-1-1
</番地以下_x30FB_建物名>

// JSONに戻しても...
{
    "key": "番地以下_x30FB_建物名"
}

何もしなければ
これだけならreplace関数で個別に置換処理すればいいと思うでしょう。

しかし、Microsoft Formsのアンケート結果が集約されるExcelシートではどうでしょう。

変換前(JSON)
{
  "飲食店を選ぶ際に「最も重視する点」は何ですか?(例:価格・味・雰囲気など)": "価格"
}
変換後(XML)
<飲食店を選ぶ際に_x300C_最も重視する点_x300D_は何ですか_xFF1F__xFF08_例_xFF1A_価格_x30FB_味_x30FB_雰囲気など_xFF09_>
    価格
</飲食店を選ぶ際に_x300C_最も重視する点_x300D_は何ですか_xFF1F__xFF08_例_xFF1A_価格_x30FB_味_x30FB_雰囲気など_xFF09_>

中点(・)や括弧などの記号を含むキーを扱うケースは多いと思います。私の場合、後の例のように複数種類の記号が含まれていたため、XML変換方式は断念しました。

まとめ

JSONのキーを扱いたいとき(特に全角記号を含むとき)には、一度CSVテーブル化すると文字を損なわずに取り出せます。

Power AutomateのクラウドフローだとCSVは扱いにくいのであまり使われていない印象ですが、こういった場面で思わぬ活躍するのは面白いですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?