コンテンツにスキップ

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 オブジェクトから必要なデータのみを絞り込み
  • 設定アクセス: 設定ファイルから特定のパラメータ値を抽出
  • データ変換: ワークフロー内の後続ノードに適したフォーマットへデータを整形