Query JSON with JMESPath#
JMESPath เป็นภาษา query สำหรับ JSON ที่คุณสามารถใช้เพื่อดึงและแปลงองค์ประกอบจากเอกสาร JSON สำหรับรายละเอียดทั้งหมดเกี่ยวกับวิธีใช้ JMESPath โปรดดู เอกสาร JMESPath
The jmespath()
method#
n8n มีเมธอดที่กำหนดเองคือ jmespath()
ใช้เมธอดนี้เพื่อทำการค้นหาบนออบเจกต์ JSON โดยใช้ภาษา query ของ JMESPath
синтаксис พื้นฐานคือ:
1 |
|
1 |
|
เพื่อช่วยให้เข้าใจว่าเมธอดทำอะไร นี่คือ JavaScript ที่ยาวกว่าซึ่งเทียบเท่ากัน:
1 2 |
|
Expressions must be single-line
ตัวอย่างโค้ดที่ยาวกว่านี้ใช้ไม่ได้ใน Expressions เนื่องจากต้องเป็นบรรทัดเดียว
object
คือออบเจกต์ JSON เช่น ผลลัพธ์จาก node ก่อนหน้า searchString
คือ expression ที่เขียนด้วยภาษา query ของ JMESPath JMESPath Specification มีรายการของ expressions ที่รองรับ ในขณะที่ Tutorial และ Examples ของพวกเขามีตัวอย่างแบบโต้ตอบ
Search parameter order
ตัวอย่างใน JMESPath Specification เป็นไปตามรูปแบบ search(searchString, object)
ไลบรารี JMESPath JavaScript ซึ่ง n8n ใช้ รองรับ search(object, searchString)
แทน ซึ่งหมายความว่าเมื่อใช้ตัวอย่างจากเอกสาร JMESPath คุณอาจต้องเปลี่ยนลำดับของพารามิเตอร์ฟังก์ชัน search
Common tasks#
ส่วนนี้ให้ตัวอย่างสำหรับการดำเนินการทั่วไปบางอย่าง ตัวอย่างเพิ่มเติมและคำแนะนำโดยละเอียดมีอยู่ใน เอกสารของ JMESPath เอง
เมื่อลองใช้ตัวอย่างเหล่านี้ คุณต้องตั้งค่า Code node Mode เป็น Run Once for Each Item
Apply a JMESPath expression to a collection of elements with projections#
จาก เอกสาร JMESPath projections:
Projections เป็นหนึ่งในฟีเจอร์หลักของ JMESPath ใช้เพื่อใช้ expression กับคอลเลกชันขององค์ประกอบ JMESPath รองรับ projections ห้าประเภท:
- List Projections
- Slice Projections
- Object Projections
- Flatten Projections
- Filter Projections
ตัวอย่างต่อไปนี้แสดงการใช้งานพื้นฐานของ list, slice, และ object projections โปรดดู เอกสาร JMESPath projections สำหรับคำอธิบายโดยละเอียดของแต่ละประเภท projection และตัวอย่างเพิ่มเติม
กำหนด JSON นี้จาก webhook node:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
ดึง list ของชื่อจริงของทุกคน:
1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
รับ slice ของชื่อจริง:
1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
รับรายการอายุของสุนัขโดยใช้ object projections:
1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Select multiple elements and create a new list or object#
ใช้ Multiselect เพื่อเลือกองค์ประกอบจากออบเจกต์ JSON และรวมเข้าด้วยกันเป็น list หรือ object ใหม่
กำหนด JSON นี้จาก webhook node:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
ใช้ multiselect list เพื่อรับชื่อจริงและนามสกุล และสร้าง lists ใหม่ที่มีทั้งสองชื่อ:
1 2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
An alternative to arrow functions in expressions#
ตัวอย่างเช่น สร้างข้อมูลอินพุตบางส่วนโดยการคืนค่าโค้ดด้านล่างจาก Code node:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
คุณสามารถทำการค้นหาเช่น "ค้นหารายการที่มีชื่อ Lenovo และบอก category ID ของพวกเขา"
1 |
|