เครื่องมือทดสอบ JSONPath
นิพจน์ JSONPath
อินพุต JSON
ผลลัพธ์
| ไวยากรณ์ | คำอธิบาย |
|---|---|
| $ | อ็อบเจ็กต์หรืออาร์เรย์ราก |
| @ | โหนดปัจจุบัน (ใช้ในนิพจน์ตัวกรอง) |
| object.property | โหนดย่อยแบบจุด (dot notation) |
| ['object'].['property'] | โหนดย่อยแบบวงเล็บ (bracket notation) หนึ่งหรือหลายรายการ |
| ..property | การไล่ระดับแบบเรียกซ้ำ |
| * | ไวลด์การ์ด เลือกองค์ประกอบทั้งหมด |
| [n] | เลือกองค์ประกอบลำดับที่ n จากอาร์เรย์ |
| [n1,n2] | เลือกรายการในอาร์เรย์ลำดับที่ n1 และ n2 (ยูเนียน) |
| [start:end:step] | ตัวดำเนินการตัดช่วงอาร์เรย์ |
| ?(expression) | นิพจน์ตัวกรอง |
| (expression) | นิพจน์สคริปต์ |
รายละเอียดทางเทคนิค
ตัวทดสอบ JSONPath ทำงานอย่างไร
เครื่องมือนี้ทำอะไร
ตัวทดสอบ JSONPath ช่วยให้คุณคิวรีข้อมูล JSON ที่ซ้อนกันด้วยนิพจน์ JSONPath คล้ายกับวิธีที่ XPath ทำงานกับ XML ตัวทดสอบ jsonpath นี้ทำหน้าที่เป็นทั้งตัวทดสอบนิพจน์ JSONPath และตัวเลือก JSON ช่วยให้นักพัฒนาดึงค่า อาร์เรย์ หรืออ็อบเจ็กต์ที่ต้องการจากโครงสร้าง JSON ที่ซับซ้อนได้ เมื่อคุณต้องการทดสอบ jsonpath ออนไลน์ เครื่องมือนี้จะแสดงค่าที่ตรงกันทั้งหมดและพาธของมัน รองรับไวยากรณ์ JSONPath รวมถึง dot notation ( $.store.book), bracket notation ( $['store']['book']), wildcards ( $..*), การตัดช่วงอาร์เรย์ และนิพจน์การกรอง เครื่องมือนี้ยึดตาม semantics ของ jsonpath-plus; การใช้งาน JSONPath มีความแตกต่างกัน ดังนั้นหากนิพจน์ของคุณใช้ได้ที่อื่นแต่ใช้ไม่ได้ที่นี่ อาจเป็นความต่างของไดอาเล็กต์ เครื่องมือนี้แสดงทั้งค่าที่แมตช์และพาธของ JSONPath ทำให้ง่ายต่อการเข้าใจว่านิพจน์นำทางผ่านโครงสร้าง JSON อย่างไร
กรณีการใช้งานทั่วไปของนักพัฒนา
นักพัฒนาใช้ตัวทดสอบ JSONPath เมื่อทำงานกับการตอบกลับจาก API ไฟล์คอนฟิก หรือโครงสร้างข้อมูล JSON แบบซ้อนที่ซับซ้อน ตัวทดสอบนิพจน์ JSONPath ช่วยดึงฟิลด์เฉพาะจากอ็อบเจ็กต์ที่ซ้อนลึก กรองอาร์เรย์ด้วยเงื่อนไข หรือค้นหาการปรากฏทั้งหมดของคีย์ที่ต้องการ นักพัฒนาจำนวนมากใช้ตัวทดสอบ JSONPath เพื่อคิวรีข้อมูล JSON จาก REST API แยกวิเคราะห์ไฟล์ล็อก หรือสำรวจอ็อบเจ็กต์คอนฟิกที่ซับซ้อน เครื่องมือนี้มีประโยชน์เมื่อดีบักการแปลงข้อมูล ตรวจสอบความถูกต้องของการตอบกลับจาก API หรือทำความเข้าใจสคีมา JSON ที่ซับซ้อน ก่อนรันคิวรี JSONPath คุณอาจต้องการจัดรูปแบบ JSON ของคุณด้วย JSON Formatter เพื่อให้อ่านง่ายขึ้น สำหรับไฟล์คอนฟิก เครื่องมือ JSON ↔ YAML Converter ช่วยแปลงระหว่างฟอร์แมตได้ เมื่อกำลังตรวจสอบข้อมูลอาร์เรย์ เครื่องมือ JSON Array to Table สามารถส่งออกผลลัพธ์เป็นรูปแบบตารางเพื่อการวิเคราะห์ที่ง่ายขึ้น
รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย
JSONPath มีหลายวิธีในการนำทางโครงสร้าง JSON เครื่องมือนี้รองรับตัวเลือก root ($), ตัวเลือก child (. หรือ []), ตัวเลือก descendant ( ..), การอ้างอิงดัชนีอาร์เรย์ ([0], [-1]), และการตัดช่วงอาร์เรย์ ( [0:3]) นิพจน์ JSONPath ที่นักพัฒนาใช้บ่อย:
$.items[*].id— ดึงฟิลด์ id ทั้งหมดจากอาร์เรย์ items$..id— ค้นหาฟิลด์ id ทั้งหมดในทุกระดับการซ้อน$['key-with-dash']— เข้าถึงคีย์ที่มีอักขระพิเศษ$..book[?(@.price < 10)].title— กรองหนังสือตามราคาและดึงชื่อเรื่อง
นิพจน์เหล่านี้แสดงให้เห็นว่า JSONPath สามารถคิวรีอาร์เรย์ที่ซ้อนกัน กรองอ็อบเจ็กต์ด้วยเงื่อนไข และดึงฟิลด์เฉพาะจากโครงสร้างที่ซับซ้อนได้อย่างไร
ข้อผิดพลาดที่พบบ่อยและกรณีขอบ
ข้อผิดพลาดที่พบบ่อยคือสับสนระหว่าง JSONPath กับการเข้าถึงพร็อพเพอร์ตีของอ็อบเจ็กต์ใน JavaScript เนื่องจาก JSONPath ใช้ไวยากรณ์ที่ต่างกันสำหรับการกรองอาร์เรย์และไวลด์การ์ด อีกประเด็นคือการเข้าใจว่าเมื่อใดควรใช้ dot notation เทียบกับ bracket notation: dot notation ใช้ได้กับคีย์แบบง่าย แต่ bracket notation จำเป็นสำหรับคีย์ที่มีอักขระพิเศษหรือเมื่อใช้นิพจน์ การอ้างอิงดัชนีอาร์เรย์อาจยุ่งยาก: ดัชนีติดลบอย่าง [-1] อ้างถึงสมาชิกตัวสุดท้าย แต่ไม่ใช่ทุกการใช้งาน JSONPath ที่รองรับสิ่งนี้ นิพจน์การกรองต้องใช้ตัวดำเนินการเปรียบเทียบที่ถูกต้องและอ้างอิงรายการปัจจุบันด้วย @ ตัวเลือก descendant (..) อาจให้ผลลัพธ์ที่ไม่คาดคิดหากแมตช์องค์ประกอบมากกว่าที่ตั้งใจ นักพัฒนาควรทดสอบนิพจน์ JSONPath กับโครงสร้าง JSON หลากหลายรูปแบบ รวมถึงกรณีขอบอย่างอาร์เรย์ว่าง ค่า null และอ็อบเจ็กต์ที่ซ้อนลึก การใช้งาน JSONPath บางแบบมีความแตกต่างเล็กน้อยในการจัดการกรณีขอบ ดังนั้นการทดสอบจึงเป็นสิ่งจำเป็น
ข้อผิดพลาดและการตรวจสอบความถูกต้อง
เมื่อทำงานกับ JSONPath อาจเกิดเงื่อนไขข้อผิดพลาดได้หลายแบบ อินพุต JSON ที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาดในการพาร์สก่อนที่จะประเมินนิพจน์ JSONPath นิพจน์ JSONPath ที่ไม่ถูกต้องจะส่งกลับข้อความข้อผิดพลาดที่ระบุว่าส่วนใดของไวยากรณ์ผิด ผลลัพธ์ว่างจะถูกส่งกลับเป็นอาร์เรย์ว่างเมื่อ นิพจน์ไม่แมตช์ค่าใด ๆ ในโครงสร้าง JSON—นี่เป็นพฤติกรรมปกติ ไม่ใช่ข้อผิดพลาด เครื่องมือนี้ตรวจสอบทั้งไวยากรณ์ JSON และไวยากรณ์นิพจน์ JSONPath พร้อมให้ข้อความข้อผิดพลาดที่ชัดเจนสำหรับอินพุตที่ผิดรูปแบบ หากนิพจน์ JSONPath ของคุณถูกต้องแต่ไม่ให้ผลลัพธ์ อาจเป็นเพราะนิพจน์ไม่ตรงกับโครงสร้างของข้อมูล JSON ของคุณ หรือข้อมูลไม่มีฟิลด์ที่คาดไว้
เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด
ใช้ตัวทดสอบ JSONPath นี้เพื่อพัฒนาคิวรีอย่างรวดเร็ว ดีบักนิพจน์ที่ซับซ้อน หรือสำรวจโครงสร้างข้อมูล JSON เหมาะอย่างยิ่งสำหรับทดสอบนิพจน์ JSONPath ก่อนนำไปใช้ในโค้ด โดยเฉพาะเมื่อทำงานกับ API ที่ไม่คุ้นเคยหรือข้อมูลซ้อนที่ซับซ้อน ฟีดแบ็กแบบภาพช่วยระบุได้ว่าทำไมนิพจน์จึงแมตช์หรือไม่แมตช์กับข้อมูลบางส่วน สำหรับโค้ดโปรดักชัน ให้ใช้ไลบรารี JSONPath ที่ผสานรวมในแอปของคุณซึ่งสามารถประมวลผลข้อมูล JSON ได้อย่างมีประสิทธิภาพ เครื่องมือบนเบราว์เซอร์เด่นด้านการพัฒนาและการสำรวจแบบโต้ตอบ ขณะที่โซลูชันแบบโค้ดให้ประสิทธิภาพ ความปลอดภัยด้านชนิดข้อมูล และการผสานรวมกับไปป์ไลน์ประมวลผลข้อมูล สำหรับชุดข้อมูลขนาดใหญ่หรือแอปที่ต้องการประสิทธิภาพสูง การใช้งาน JSONPath แบบเนทีฟในภาษาของคุณจะให้ประสิทธิภาพดีกว่าเครื่องมือบนเบราว์เซอร์