JSONの解析で値を取り出す(欠落・null・型違いを確認)
JSONのnameとquantityを解析するクラウドフローです。同じスキーマで4つの入力を比べ、必須項目の欠落・null・数値の文字列で失敗する違いを確認します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。
実行前に確認
- この練習はメール送信・ファイル保存・API呼び出しを行いません。組み込み処理のみでも、すべての契約で利用できるという意味ではありません。組織の環境・ライセンス制限を確認してください。
- 入力と実行履歴にはデータが残ります。顧客情報、パスワード、トークンなどをサンプルへ貼り付けず、架空データで確認します。
- JSONの解析は、欠けた数量を0で補ったり、文字列"3"を数値3へ直したりする処理ではありません。この例は先頭が { } のオブジェクト1件用です。[ ] の配列は対象外です。
- requiredは項目の存在を確認する指定です。この最小スキーマだけでは、空のnameやquantityの0・負の整数は拒否しません。商品名の空欄や数量の範囲など、業務上の条件は別途確認が必要です。
1使うトリガーとアクション
- トリガーフローを手動でトリガーする
- アクション作成名前をInputJsonに変更。まず図の入力Aを設定
- アクションJSON の解析名前をParseOrderに変更。nameとquantityを必須にする
- アクション作成名前をNameOutに変更。ParseOrderが成功した後だけnameを出力
図で見る処理のイメージ
概念図nameは同じ「りんご」のまま、quantityだけを変えます。固定したスキーマで、入力の違いが解析後にどう現れるかを比べます。
数量が違うと、解析後はどうなる?
A〜Dは別々の実行です。入力を1つだけ選び、InputJsonに入れます。
A数量が整数
InputJsonに入れるJSON{
"name": "りんご",
"quantity": 3
}必須の2項目があり、型も一致
NameOut → りんごB数量の項目がない
InputJsonに入れるJSON{
"name": "りんご"
}requiredで指定したquantityが欠落
NameOut → スキップC数量がnull
InputJsonに入れるJSON{
"name": "りんご",
"quantity": null
}項目はあるが、nullは整数ではない
NameOut → スキップD数量が文字列
InputJsonに入れるJSON{
"name": "りんご",
"quantity": "3"
}"3"は文字列。数値3とは型が違う
NameOut → スキップnameが同じでも、解析全体が失敗すると取り出せないNameOutは「解析に成功した後だけ」動きます。失敗したB・C・Dでは、空文字を出すのではなくスキップされます。
入力Aはnameを取り出せます。B・C・Dは解析で失敗し、成功後だけのNameOutは動きません。解析の失敗と、後続のスキップを分けて確認します。
4つは別々に実行する練習の期待値です。実際のPower Automateフローを実行して確認した結果ではありません。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する8ステップの設定と確認方法
- 1
準備:Power Automateで、本番と分けたインスタントクラウドフローを作り、手動トリガーを選びます。練習には架空の商品だけを使います。データ操作の組み込みアクションだけを使うため、HTTP・Forms・Outlookへの接続は不要です。利用する環境でクラウドフローを作成・実行できる権限とライセンスは先に確認します。
- 2
データ操作の「作成」を追加して名前をInputJsonに変更します。通常の入力欄へ {"name":"りんご","quantity":3} を貼り付けます。quantityの3はダブルクォートで囲みません。この練習では外部APIから取得せず、入力を自分で置き換えます。
- 3
データ操作の「JSON の解析」を追加し、名前をParseOrderに変更します。コンテンツはInputJsonの動的コンテンツ「出力」を選びます。スキーマ欄へ、このステップの下にあるスキーマ全体を貼り付けます。nameはstring(文字列)、quantityはinteger(整数)、requiredで両方の項目を必須にします。「サンプルから生成」を使う場合も、この内容と照合します。
そのまま使うスキーマ
ParseOrderの「スキーマ」欄へ貼り付けます。4ケースとも同じ設定です。
{ "type": "object", "properties": { "name": { "type": "string" }, "quantity": { "type": "integer" } }, "required": [ "name", "quantity" ] } - 4
ParseOrderの後に「作成」を追加し、名前をNameOutに変更します。入力にはParseOrderの動的コンテンツ「name」を選びます。nameという文字を直接入力しないでください。実行条件はParseOrderが「成功しました」の場合だけにし、失敗・タイムアウト・スキップは選びません。
- 5
確認A:保存して手動実行します。実行履歴でInputJsonの入力、ParseOrderの成功とquantityの数値3、NameOutの出力「りんご」を確認します。この例は1件のオブジェクトなので「それぞれに適用する」は不要です。
- 6
確認B・C・D:図の入力JSONを1つずつInputJsonへ貼り付け、毎回保存して別々に実行します。ParseOrderのスキーマは変更しません。Bはquantityの項目なし、Cはquantityがnull、Dはquantityが文字列"3"です。3ケースともParseOrderが失敗し、NameOutはスキップされ、フロー全体が失敗する想定です。4つのJSONをまとめて配列にしないでください。
- 7
失敗を確認する:実行履歴で赤いParseOrderを開き、入力とエラーの詳細を確認します。Bはrequiredによる項目不足、C・Dはintegerに合わない型を調べます。エラー文の表示は環境によって異なります。NameOutが空文字を出したのではなく、実行されなかったことを確認します。確認後は入力Aへ戻して保存します。
- 8
実データへ移す前に:項目の欠落を認めるか、nullを認めるかは別に決めます。requiredから項目名を外すだけでは、その項目がnullで存在するときの型違いは解決しません。エラーを消すために必須指定や型を一括で削除せず、送り元のデータ仕様と後続処理を確認します。失敗時にも記録や通知が必要なら、関連手順99の実行条件を別途設計します。
- 対象環境
- Power Automate クラウドフロー
- 更新日
- 2026年10月12日