Bỏ qua, đến nội dung

Cấu hình node - JSON Query

Node query JSON sử dụng JMESPath hoặc JSONPath để lọc, tìm kiếm, và trích xuất dữ liệu từ object JSON phức tạp.

Bảng tham số cấu hình

Tham sốKiểuBắt buộcMặc địnhMô tả
sourcestringBiến workflow chứa JSON data nguồn (object hoặc array)
enginestringKhôngJMESPathEngine query: JMESPath hoặc JSONPath
expressionstringBiểu thức query (VD: items[?price > 100].name)
defaultValueanyKhôngnullGiá trị mặc định khi query không có kết quả

Dữ liệu đầu ra (Output)

TênKiểuMô tả
resultanyDữ liệu khớp query (array, object, hoặc scalar)
countnumberSố phần tử kết quả (nếu result là array)

Ví dụ biểu thức theo engine

EngineExpressionMô tả
JMESPathitems[?status == 'active']Lọc items có status active
JMESPathitems[*].nameLấy tất cả tên
JMESPathmax_by(items, &price)Item có giá cao nhất
JMESPathitems[?price > \100`] | [0]`Item đầu tiên có giá > 100
JSONPath$.items[?(@.price > 100)]Items giá trên 100
JSONPath$.items[*].nameLấy tất cả tên

So sánh JMESPath vs JSONPath

Đặc điểmJMESPathJSONPath
FilterMạnh (function, pipe)Cơ bản
ProjectionHỗ trợ multiselectHỗ trợ
Aggregatemax_by, min_by, sort_byKhông
Cú phápRiêng biệtGiống XPath
Độ phổ biếnAWS, API GatewayPhổ biến hơn

Lưu ý quan trọng

  • JMESPath và JSONPath có cú pháp khác nhau - chọn đúng engine cho biểu thức
  • Query trên mảng lớn (hàng ngàn phần tử) có thể chậm - cân nhắc filter ở tầng DB
  • Kết quả filter trả về mảng rỗng [] (không phải null) khi không có phần tử khớp
  • Expression lỗi cú pháp sẽ throw error - test kỹ biểu thức trước khi sử dụng trong workflow
  • Dùng Get JSON Field nếu chỉ cần lấy 1 field theo path cố định (đơn giản và nhanh hơn)