Giao diện
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ểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
source | string | Có | — | Biến workflow chứa JSON data nguồn (object hoặc array) |
engine | string | Không | JMESPath | Engine query: JMESPath hoặc JSONPath |
expression | string | Có | — | Biểu thức query (VD: items[?price > 100].name) |
defaultValue | any | Không | null | Giá trị mặc định khi query không có kết quả |
Dữ liệu đầu ra (Output)
| Tên | Kiểu | Mô tả |
|---|---|---|
result | any | Dữ liệu khớp query (array, object, hoặc scalar) |
count | number | Số phần tử kết quả (nếu result là array) |
Ví dụ biểu thức theo engine
| Engine | Expression | Mô tả |
|---|---|---|
| JMESPath | items[?status == 'active'] | Lọc items có status active |
| JMESPath | items[*].name | Lấy tất cả tên |
| JMESPath | max_by(items, &price) | Item có giá cao nhất |
| JMESPath | items[?price > \100`] | [0]` | Item đầu tiên có giá > 100 |
| JSONPath | $.items[?(@.price > 100)] | Items giá trên 100 |
| JSONPath | $.items[*].name | Lấy tất cả tên |
So sánh JMESPath vs JSONPath
| Đặc điểm | JMESPath | JSONPath |
|---|---|---|
| Filter | Mạnh (function, pipe) | Cơ bản |
| Projection | Hỗ trợ multiselect | Hỗ trợ |
| Aggregate | max_by, min_by, sort_by | Không |
| Cú pháp | Riêng biệt | Giống XPath |
| Độ phổ biến | AWS, API Gateway | Phổ 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)