跳轉至

JSON Extract Value

使用 JMESPath 表達式自 JSON 資料中精準提取特定鍵值。

功能說明

JSON Extract Value 節點讓您能利用宣告式的 JMESPath 表達式自 JSON 結構中提取特定欄位。它支援多層巢狀物件存取、陣列索引定位以及強大的萬用字元過濾語法,讓您能輕而易舉地在複雜 JSON 結構中檢索數據。

參數規格

輸入參數 (Input Parameters)

參數名稱 資料型別 描述說明 預設值
json json, str, dict 欲提取數據的來源 JSON 資料 {}
path str 用於提取目標資料的 JMESPath 表達式(例如 'user.name'、'items[0].title'、'[*].assignee') ""

輸出參數 (Output Parameters)

參數名稱 資料型別 描述說明
output json 提取出的目標數值物件

核心特性

  • 支援 JMESPath 表達式:具備強大且具彈性的宣告式資料查詢能力
  • 點記號法 (Dot Notation):使用直觀的 . 符號遍歷多層物件結構
  • 陣列索引定位:使用 [index] 語法精確存取特定陣列元素
  • 萬用字元投影:使用 [*] 語法自陣列中批次提取所有物件的同名屬性
  • 原生 Python 型別回傳:直接回傳原生資料型別(字串、字典、清單、數值等),無需繁瑣的二次序列化反序列化
  • 即時響應:當輸入資料變更時自動同步重新運算
  • 安全防護:若查詢路徑不存在,安全備援回傳空字典 {} 而非拋出例外

JMESPath 查詢語法速查

📚 延伸閱讀:欲深入了解完整的進階語法規範,請參閱 JMESPath 官方教學文件。

基礎物件存取 (Basic Object Access)

# 存取巢狀物件屬性
path = "user.name"  # 取得使用者的姓名
path = "user.profile.email"  # 取得深層巢狀的 Email

陣列索引存取 (Array Indexing)

# 存取陣列元素
path = "items[0]"  # 取得陣列中的第一個元素
path = "items[0].title"  # 取得第一個項目的 title 屬性
path = "users[2].name"  # 取得第三個使用者的姓名

萬用字元批次提取 (Wildcard Operations)

# 自陣列中批次提取特定屬性值
path = "items[*].title"  # 取得 items 陣列中所有物件的 title
path = "users[*].name"  # 取得 users 陣列中所有使用者的姓名
path = "[*].assignee"  # 自根層級陣列中提取所有 assignee 屬性

複合進階路徑 (Complex Paths)

# 混合搭配物件與陣列索引
path = "orders[0].items[1].price"  # 取得第一筆訂單中第二個項目的價格
path = "projects[*].tasks[*].assignee"  # 取得所有專案中所有任務的指派人

實用範例展示

基礎物件提取

# 輸入 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"
# 輸出: {}  # 路徑不存在時回傳空字典

多樣化回傳型別

節點直接回傳 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

適用情境

  • API 回應過濾:自外部複雜的 API JSON Payload 中精準剔除無用欄位
  • 資料縮減過濾:在大數據物件中精確提取感興趣的業務欄位
  • 組態設定讀取:提取多層結構化設定檔中的特定參數
  • 資料轉換管道:為下游專業節點裁切準備最適格式的資料
  • JSON Input — 自多個引數建立 JSON 資料
  • JSON Replace — 替換或更新 JSON 中的特定數值
  • Display JSON — 格式化並視覺化展示 JSON 資料
  • To JSON — 將其他資料型別轉換為標準 JSON