Power AppsでJSONを扱う完全ガイド:ParseJSON関数とデータ変換テクニック

Power AppsでのJSON解析と操作方法を詳しく解説。ParseJSON関数の使い方、データ型変換、実践的なサンプルコードまで包括的に紹介します。

💡

Info

Power AppsでのJSON操作をマスターするための完全ガイドです。ParseJSON関数の基本的な使い方から実践的な応用例まで、詳しく解説します。

JSONとは何か?

JSON(JavaScript Object Notation)は、データ交換の標準的な形式として幅広く使用されています。APIの応答、外部システムとの連携、設定ファイルなど、現代のアプリケーション開発では避けて通れない存在です。

JSONの基本構造例json
{
"name": "田中太郎",
"age": 30,
"department": "開発部",
"skills": ["React", "Power Apps", "Azure"],
"active": true,
"lastLogin": "2025-08-07T10:30:00Z"
}

Power AppsにおけるJSON操作の重要性

Power Appsでは、以下のシーンでJSONデータの処理が必要になります:

🔌

外部API連携

REST APIから取得したJSONデータをアプリで利用

📊

Power Automate連携

フローから返されるJSONデータを処理

💾

データ永続化

複雑なオブジェクトをJSON形式で保存

🔄

システム間連携

異なるシステム間でのデータ交換

ParseJSON関数の基本

構文と基本的な使い方

ParseJSON関数は、JSON文字列をPower Appsで扱えるオブジェクトに変換する核となる関数です。

ParseJSON関数の基本構文javascript
ParseJSON(JSONString [, Type])

引数の説明:

  • JSONString: 解析したいJSON形式の文字列(必須)
  • Type: 返すオブジェクトの型指定(省略可能)

実際の使用例

基本的なJSON解析例javascript
// JSON文字列
Set(jsonString, "{ "name": "田中太郎", "age": 30 }");

// ParseJSONで解析
Set(parsedData, ParseJSON(jsonString));

// プロパティにアクセス
Text(parsedData.name)  // "田中太郎"
Value(parsedData.age)  // 30

Untyped objectについて

ParseJSON関数は「Untyped object」を返します。これは、Power Appsがデータの型を自動判定できないオブジェクトのことです。そのため、実際に値を使用する際には適切な変換関数を使用する必要があります。

データ型変換の詳細

文字列型への変換

文字列変換javascript
Text(ParseJSON(jsonString).name)

数値型への変換

数値変換javascript
Value(ParseJSON(jsonString).age)

真偽値型への変換

真偽値変換javascript
Boolean(ParseJSON(jsonString).active)

日付型への変換

日付変換(ISO 8601形式)javascript
DateTimeValue(ParseJSON(jsonString).lastLogin)
💡

日付形式について

JSON内の日付文字列は、ISO 8601形式(例:2025-08-07T10:30:00Z)である必要があります。他の形式の場合は、まずText()関数で文字列に変換してから、DateValue()やDateTimeValue()を使用してください。

複雑なデータ構造の処理

レコード(オブジェクト)の処理

レコードの処理javascript
// JSON例
{
"user": {
  "name": "田中太郎",
  "department": "開発部"
}
}

// 取得方法
Set(userData, ParseJSON(jsonString).user);
Text(userData.name)  // "田中太郎"
Text(userData.department)  // "開発部"

配列(テーブル)の処理

配列の処理は、ForAll関数と組み合わせて行います。

配列の処理javascript
// JSON例
{
"employees": [
  { "name": "田中太郎", "age": 30 },
  { "name": "佐藤花子", "age": 25 },
  { "name": "山田次郎", "age": 35 }
]
}

// テーブル形式に変換
Set(
employeesTable,
ForAll(
  Table(ParseJSON(jsonString).employees),
  {
    Name: Text(ThisRecord.Value.name),
    Age: Value(ThisRecord.Value.age)
  }
)
)

実践的な応用例

Power Automateとの連携

1

Power Automateでフロー作成

JSONデータを返すPower Automateフローを作成します。

フローからの戻り値例json
{
"status": "success",
"data": {
  "total": 1250,
  "items": [
    {
      "id": 1,
      "name": "商品A",
      "price": 1000
    },
    {
      "id": 2,
      "name": "商品B", 
      "price": 1500
    }
  ]
}
}
2

Power AppsでフローEWOLFを呼び出し

// フローを実行してJSONを取得
UpdateContext({ 
flowResult: YourFlowName.Run() 
});
3

JSONデータの解析と利用

// ステータスチェック
If(
Text(ParseJSON(flowResult).status) = "success",

// 成功時の処理
Set(
  productData,
  ForAll(
    Table(ParseJSON(flowResult).data.items),
    {
      ID: Value(ThisRecord.Value.id),
      ProductName: Text(ThisRecord.Value.name),
      Price: Value(ThisRecord.Value.price)
    }
  )
),

// 失敗時の処理
Notify("データの取得に失敗しました", NotificationType.Error)
);

Web APIからのデータ取得例

郵便番号検索APIとの連携例javascript
// Power Automateで郵便番号APIを呼び出し、結果をJSONで取得
UpdateContext({ 
addressResult: GetAddressByZip.Run(textZipCode.Text)
});

// JSONレスポンスの解析
If(
!IsBlank(addressResult),
Set(
  addressInfo,
  ParseJSON(addressResult)
);

// 住所情報の表示
UpdateContext({
  Prefecture: Text(addressInfo.results.0.address1),
  City: Text(addressInfo.results.0.address2), 
  Town: Text(addressInfo.results.0.address3)
})
);

エラーハンドリングとベストプラクティス

IfError関数との組み合わせ

エラーハンドリングjavascript
IfError(
// JSON解析を試行
Set(parsedData, ParseJSON(jsonString)),

// エラーが発生した場合
Notify("JSONの解析に失敗しました", NotificationType.Error);
Set(parsedData, Blank())
);

パフォーマンスの最適化

ParseJSONを何度も呼び出すとパフォーマンスが悪化しませんか?
💡
はい、同じJSONに対してParseJSONを複数回呼び出すのは非効率です。With関数を使用して、一度だけ解析して再利用しましょう。
With関数を使った最適化javascript
With(
{
  parsed: ParseJSON(jsonString)
},

// parseされたデータを複数箇所で利用
{
  Name: Text(parsed.name),
  Age: Value(parsed.age),
  Department: Text(parsed.department),
  Skills: ForAll(
    Table(parsed.skills),
    Text(ThisRecord.Value)
  )
}
);

よくある課題と解決策

課題1: プロパティ名が動的な場合

動的なプロパティ名(例:日付が含まれるキー)を持つJSONの処理が困難

{
"2025-08-01": { "value": 100 },
"2025-08-02": { "value": 150 },
"2025-08-03": { "value": 200 }
}

課題2: 大きなJSONデータの処理

⚠️

パフォーマンスに注意

非常に大きなJSONデータ(数千レコードなど)を一度に処理すると、アプリのパフォーマンスが低下する可能性があります。以下の対策を検討してください:

  • データをページネーション(分割取得)する
  • 必要最小限のフィールドのみを取得する
  • Power Automate側で事前にデータを加工する

課題3: 型の不一致

安全な型変換javascript
// 数値が文字列として格納されている場合
IfError(
Value(ParseJSON(jsonString).numericValue),
0  // エラー時はデフォルト値を使用
);

// 真偽値の安全な変換
If(
Or(
  Text(ParseJSON(jsonString).boolValue) = "true",
  Value(ParseJSON(jsonString).boolValue) = 1
),
true,
false
);

まとめ

Power AppsでのJSON操作は、以下のポイントを押さえることが重要です:

ParseJSON関数の理解

JSON文字列をUntyped objectに変換する基本関数

適切な型変換

Text(), Value(), Boolean()などの変換関数を使用

複雑な構造の処理

ForAll()関数で配列を、ドット記法でネストしたオブジェクトを処理

エラーハンドリング

IfError()関数を使用した堅牢な例外処理

パフォーマンス最適化

With()関数でのキャッシュ、適切なデータ構造の選択

次のステップ

JSONの基本操作をマスターしたら、次は以下にチャレンジしてみてください:

  • Microsoft Graph APIとの連携
  • 複雑なデータ変換ロジックの実装
  • リアルタイムデータ処理
  • カスタムコネクタの作成

Power AppsでのJSON操作をマスターすることで、外部システムとの連携やデータ処理の可能性が大きく広がります。ぜひ実際のプロジェクトで活用してみてください!

💭この記事はいかがでしたか?

あなたの感想やご意見をお聞かせください。今後のコンテンツ改善の参考にさせていただきます。

📤この記事をシェア

この記事が役に立ったら、ぜひ他の人にも共有してください!

✍️記事について

この記事の内容に関してご質問やご指摘がございましたら、お気軽にお問い合わせください。

⚠️ 記事の内容は投稿時点での情報です。最新の情報については公式サイト等でご確認ください。

🔄 内容の正確性には注意を払っていますが、誤りがある場合はお知らせください。

📂 このカテゴリーの他の記事

services の記事一覧を見る →

📂同じカテゴリの記事

🏷️関連記事

最新記事

🚀もっと見つける