← 手順一覧へ戻る
クラウドフローデータ処理初心者向け

JSONの解析で値を取り出す(欠落・null・型違いを確認)

JSONのnameとquantityを解析するクラウドフローです。同じスキーマで4つの入力を比べ、必須項目の欠落・null・数値の文字列で失敗する違いを確認します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。

実行前に確認

  • この練習はメール送信・ファイル保存・API呼び出しを行いません。組み込み処理のみでも、すべての契約で利用できるという意味ではありません。組織の環境・ライセンス制限を確認してください。
  • 入力と実行履歴にはデータが残ります。顧客情報、パスワード、トークンなどをサンプルへ貼り付けず、架空データで確認します。
  • JSONの解析は、欠けた数量を0で補ったり、文字列"3"を数値3へ直したりする処理ではありません。この例は先頭が { } のオブジェクト1件用です。[ ] の配列は対象外です。
  • requiredは項目の存在を確認する指定です。この最小スキーマだけでは、空のnameやquantityの0・負の整数は拒否しません。商品名の空欄や数量の範囲など、業務上の条件は別途確認が必要です。

1使うトリガーとアクション

  1. トリガーフローを手動でトリガーする
  2. アクション作成名前をInputJsonに変更。まず図の入力Aを設定
  3. アクションJSON の解析名前をParseOrderに変更。nameとquantityを必須にする
  4. アクション作成名前をNameOutに変更。ParseOrderが成功した後だけnameを出力

図で見る処理のイメージ

概念図

nameは同じ「りんご」のまま、quantityだけを変えます。固定したスキーマで、入力の違いが解析後にどう現れるかを比べます。

数量が違うと、解析後はどうなる?

同じスキーマで4つを比較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では、空文字を出すのではなくスキップされます。

入力と後続処理の違いを示す概念図です。スキーマは下の「実際の設定内容」にあります。実際のPower Automateの画面・実行結果ではありません。
結果の例

入力Aはnameを取り出せます。B・C・Dは解析で失敗し、成功後だけのNameOutは動きません。解析の失敗と、後続のスキップを分けて確認します。

4つは別々に実行する練習の期待値です。実際のPower Automateフローを実行して確認した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する8ステップの設定と確認方法
  1. 1

    準備:Power Automateで、本番と分けたインスタントクラウドフローを作り、手動トリガーを選びます。練習には架空の商品だけを使います。データ操作の組み込みアクションだけを使うため、HTTP・Forms・Outlookへの接続は不要です。利用する環境でクラウドフローを作成・実行できる権限とライセンスは先に確認します。

  2. 2

    データ操作の「作成」を追加して名前をInputJsonに変更します。通常の入力欄へ {"name":"りんご","quantity":3} を貼り付けます。quantityの3はダブルクォートで囲みません。この練習では外部APIから取得せず、入力を自分で置き換えます。

  3. 3

    データ操作の「JSON の解析」を追加し、名前をParseOrderに変更します。コンテンツはInputJsonの動的コンテンツ「出力」を選びます。スキーマ欄へ、このステップの下にあるスキーマ全体を貼り付けます。nameはstring(文字列)、quantityはinteger(整数)、requiredで両方の項目を必須にします。「サンプルから生成」を使う場合も、この内容と照合します。

    そのまま使うスキーマ

    ParseOrderの「スキーマ」欄へ貼り付けます。4ケースとも同じ設定です。

    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        }
      },
      "required": [
        "name",
        "quantity"
      ]
    }
  4. 4

    ParseOrderの後に「作成」を追加し、名前をNameOutに変更します。入力にはParseOrderの動的コンテンツ「name」を選びます。nameという文字を直接入力しないでください。実行条件はParseOrderが「成功しました」の場合だけにし、失敗・タイムアウト・スキップは選びません。

  5. 5

    確認A:保存して手動実行します。実行履歴でInputJsonの入力、ParseOrderの成功とquantityの数値3、NameOutの出力「りんご」を確認します。この例は1件のオブジェクトなので「それぞれに適用する」は不要です。

  6. 6

    確認B・C・D:図の入力JSONを1つずつInputJsonへ貼り付け、毎回保存して別々に実行します。ParseOrderのスキーマは変更しません。Bはquantityの項目なし、Cはquantityがnull、Dはquantityが文字列"3"です。3ケースともParseOrderが失敗し、NameOutはスキップされ、フロー全体が失敗する想定です。4つのJSONをまとめて配列にしないでください。

  7. 7

    失敗を確認する:実行履歴で赤いParseOrderを開き、入力とエラーの詳細を確認します。Bはrequiredによる項目不足、C・Dはintegerに合わない型を調べます。エラー文の表示は環境によって異なります。NameOutが空文字を出したのではなく、実行されなかったことを確認します。確認後は入力Aへ戻して保存します。

  8. 8

    実データへ移す前に:項目の欠落を認めるか、nullを認めるかは別に決めます。requiredから項目名を外すだけでは、その項目がnullで存在するときの型違いは解決しません。エラーを消すために必須指定や型を一括で削除せず、送り元のデータ仕様と後続処理を確認します。失敗時にも記録や通知が必要なら、関連手順99の実行条件を別途設計します。

Microsoft公式ページで確認する

設定を確認できる公式資料