JSON 値抽出 (JSON Extract Value)
JMESPath 式を使用して、JSON から特定の値を抽出します。
説明 (Description)
JSON Extract Value ノードは、JMESPath 式を使用して JSON データから特定の部分データを抽出します。ネストされたオブジェクトへのアクセス、配列インデックス指定、および強力なワイルドカード操作をサポートしており、複雑な JSON 構造からのデータ取得を容易に行えます。
パラメータ一覧 (Parameters)
入力パラメータ
| パラメータ名 | 型 | 説明 | デフォルト値 |
|---|---|---|---|
json |
json, str, dict | 抽出対象の JSON データ | {} |
path |
str | データを抽出するための JMESPath 式(例: 'user.name', 'items[0].title', '[*].assignee') |
"" |
出力パラメータ
| パラメータ名 | 型 | 説明 |
|---|---|---|
output |
json | 抽出された値 |
主な機能 (Features)
- JMESPath 式の活用: 柔軟なデータ抽出のための強力な JMESPath 構文を使用
- ドット記法パス: シンプルなドット記法で JSON 構造をナビゲート
- 配列インデックス:
[index]構文を使用して配列要素に直接アクセス - ワイルドカード操作:
[*]構文を使用して配列内のすべての値を一括抽出 - ネイティブ Python 型の返却: JSON シリアライズを介さず、Python のネイティブ値(文字列、辞書、リスト等)を直接返却
- リアルタイム更新: 入力データの変更に応じて自動更新
- 安全な抽出: パスが存在しない場合は空の辞書
{}を返却
JMESPath 構文 (JMESPath Syntax)
📚 詳細リファレンス: 完全な JMESPath 構文と高度な機能については、JMESPath 公式ドキュメント を参照してください。
基本的なオブジェクトアクセス
# ネストされたオブジェクトプロパティへのアクセス
path = "user.name" # ユーザー名を取得
path = "user.profile.email" # ネストされたメールアドレスを取得
配列インデックス指定
# 配列要素へのアクセス
path = "items[0]" # 最初のアイテムを取得
path = "items[0].title" # 最初のアイテムのタイトルを取得
path = "users[2].name" # 3番目のユーザーの名前を取得
ワイルドカード操作
# 配列からすべての値を抽出
path = "items[*].title" # items 配列内のすべてのタイトルを取得
path = "users[*].name" # users 配列内のすべての名前を取得
path = "[*].assignee" # ルート配列内のすべての担当者を取得
複合パス
# オブジェクトと配列アクセスの組み合わせ
path = "orders[0].items[1].price" # 最初の注文における2番目の商品の価格を取得
path = "projects[*].tasks[*].assignee" # すべてのプロジェクトタスクからすべての担当者を取得
使用例 (Examples)
基本的なオブジェクト抽出
# 入力 JSON: {"user": {"name": "John", "age": 30}}
# Path: "user.name"
# 出力: "John" # Python の生の文字列値を返却
配列要素の抽出
# 入力 JSON: {"items": [{"title": "Book", "price": 25}, {"title": "Magazine", "price": 10}]}
# Path: "items[0].title"
# 出力: "Book" # Python の生の文字列値を返却
ネストされた配列へのアクセス
# 入力 JSON: {"orders": [{"items": [{"name": "Product A"}, {"name": "Product B"}]}]}
# Path: "orders[0].items[1].name"
# 出力: "Product B" # Python の生の文字列値を返却
存在しないパスの指定
# 入力 JSON: {"user": {"name": "John"}}
# Path: "user.email"
# 出力: {} # 存在しないパスの場合は空の辞書(Python dict オブジェクト)を返却
異なる戻り値の型
このノードは、抽出されたデータ型に応じて、JMESPath から直接 Python のネイティブ値を返却します:
# 文字列の抽出
# 入力 JSON: {"product": {"name": "Widget", "category": "Electronics"}}
# Path: "product.name"
# 出力: "Widget" # Python 文字列 (str)
# オブジェクトの抽出
# 入力 JSON: {"user": {"name": "John", "age": 30}}
# Path: "user"
# 出力: {"name": "John", "age": 30} # Python 辞書 (dict)
# 配列の抽出
# 入力 JSON: {"items": [{"title": "Book"}, {"title": "Magazine"}]}
# Path: "items"
# 出力: [{"title": "Book"}, {"title": "Magazine"}] # Python リスト (list)
重要な注意点:
- ノードはネイティブな Python 型(str、dict、list、int、bool 等)を直接返却し、余計な JSON 文字列化を行いません
- これにより、パースの手間なく出力結果をワークフローの後続ノードで直接利用できます
- ライブラリ内の他の JSON ノード(JsonInput、JsonReplace 等)と完全に一貫した動作仕様です
- JMESPath がすべての型変換を自動的に処理します
ユースケース (Use Cases)
- API レスポンス処理: API から返された大量のデータから特定フィールドのみを抽出
- データフィルタリング: 大規模な JSON オブジェクトから必要なデータのみを絞り込み
- 設定アクセス: 設定ファイルから特定のパラメータ値を抽出
- データ変換: ワークフロー内の後続ノードに適したフォーマットへデータを整形
関連ノード (Related Nodes)
- JSON 入力 (JSON Input) - 入力から JSON データを作成
- JSON 置換 (JSON Replace) - JSON 内の値を置換
- JSON 表示 (Display JSON) - JSON データを整形して表示
- JSON 変換 (To JSON) - その他のデータ型を JSON に変換