เครื่องมือทดสอบ JSON Path
ให้วางเอกสารในรูปแบบ JSON แล้วป้อนสูตร JSONPath เช่น $..book[?(@.price<10)] โปรแกรมทดสอบจะประเมินสูตรนี้กับเนื้อหาในเอกสาร และแสดงค่าที่ตรงกันทั้งหมดพร้อมเส้นทางการเข้าถึงที่แม่นยำสำหรับแต่ละค่า วิธีนี้มีประโยชน์อย่างมากในการตรวจสอบความถูกต้องของคำสั่งที่คุณกำลังจะใส่ลงในสคริปต์หรือข้อกำหนด API (Postman, k6 และ JMeter ต่างรองรับ JSONPath)
วิธีทดสอบสูตร JSONPath
-
1
วางเอกสาร JSON
JSON ที่ถูกต้องทุกประเภท, ออบเจกต์, อาร์เรย์, และโครงสร้างที่มีการซ้อนกันหลายระดับ
-
2
ป้อนสูตร
เริ่มต้นด้วย `$` สำหรับราก ใช้ `.` สำหรับลูก ใช้ `..` สำหรับการสืบทอดแบบเรกูเรสซีฟ และใช้ `[*]` สำหรับไวลด์คาร์ด
-
3
ดูผลการจับคู่แบบเรียลไทม์
ผลการจับคู่แต่ละรายการจะแสดงพร้อมค่าและ JSONPath ฉบับเต็ม โดยจะถูกเน้นไว้ในเอกสารต้นฉบับ
-
4
คัดลอกผลลัพธ์
คัดลอกผลการจับคู่เป็นอาร์เรย์ JSON หรือคัดลอกเส้นทางแต่ละเส้นเพื่อนำไปใช้ในโค้ดขั้นตอนถัดไป
คำอธิบายไวยากรณ์ของ JSONPath
| นิพจน์ | ความหมาย |
|---|---|
$ |
องค์ประกอบหลัก |
$.store |
ลูกของ $ ซึ่งมีชื่อว่า store |
$["store"] |
เหมือนกัน รูปแบบกรอบ |
$..author |
คุณสมบัติทั้งหมดของ author ในทุกระดับความลึก |
$.store.book[*] |
หนังสือทุกเล่มในร้านค้า |
$.store.book[0] |
หนังสือเล่มแรก |
$.store.book[-1:] |
หนังสือเล่มสุดท้าย |
$.store.book[0:2] |
หนังสือสองเล่มแรก (ชุด) |
$.store.book[?(@.isbn)] |
หนังสือที่มีคุณสมบัติ isbn |
$.store.book[?(@.price < 10)] |
หนังสือราคาต่ำกว่า 10 |
$.store.book[?(@.category == "fiction")] |
หนังสือแนวนิยาย |
$..* |
ค่าทุกค่า อยู่ทุกหนทุกแห่ง |
รูปแบบการกรอง
นิพจน์การกรองใช้ @ เพื่อระบุโหนดปัจจุบัน เครื่องทดสอบรองรับตัวดำเนินการทั่วไป ได้แก่ ==, !=, <, >, <=, >=, &&, || และ regex =~
$.items[?(@.qty >= 10 && @.price < 50)]
รูปแบบต่าง ๆ ของ JSONPath
มีการพัฒนาฟังก์ชัน JSONPath หลายรูปแบบที่มีข้อจำกัดในการทำงานร่วมกันเล็กน้อย โปรแกรมทดสอบนี้ใช้ตามข้อกำหนดเดิมของ Goessner และการปรับปรุงตาม RFC 9535 ซึ่งสามารถทำงานร่วมกันได้ดีกับ:
- JaywayJsonPath (Java)
- jsonpath-plus (JavaScript)
- jsonpath-rw (ในภาษา Python)
- คำสั่งการแสดงออกของเส้นทางพื้นฐานใน jq
คุณสมบัติที่ไม่สามารถใช้งานร่วมกันได้ (เช่น การใช้สคริปต์ร่วมกับโค้ด JS แบบไม่กำหนดลักษณะเฉพาะ) จะถูกระบุด้วยเครื่องหมายในแผงแสดงข้อผิดพลาด
เมื่อ JSONPath มีประสิทธิภาพเหนือกว่าตัวแยกข้อมูลแบบเต็มรูปแบบ
- ข้อกำหนดการทดสอบ:
pm.expect(jsonData).to.have.jsonPath(...)ของ Postman จะรับเส้นทางเป็นอินพุต - การดึงค่ากำหนดค่า: ดึงค่าเพียงหนึ่งรายการจากผลตอบกลับของ API ที่มีปริมาณมาก โดยไม่ต้องใช้ไลบรารีใดๆ
- สคริปต์ทดสอบการโหลด: k6, JMeter และ Gatling ล้วนรองรับ JSONPath สำหรับการตรวจสอบ
- Kubernetes / AWS CLI: แฟลก
--queryและ--jsonpathช่วยให้คุณกำหนดรูปแบบผลลัพธ์จากบรรทัดคำสั่งได้
ข้อผิดพลาดที่พบบ่อย
- การใช้
.กับอาร์เรย์:$.users.0.nameไม่ถูกต้อง กรุณาใช้$.users[0].nameแทน - ลืมใช้
..สำหรับการกำหนดความลึก เส้นทางเช่น$.nameจะตรงกับnameในระดับสูงสุดเท่านั้น ควรใช้$..nameสำหรับทุกกรณี - การสับสนระหว่าง JSONPath กับ jq: jq เป็นชุดฟังก์ชันที่ครอบคลุมมากกว่า โดยมีความสามารถในการควบคุมลำดับการประมวลผลและการแปลงข้อมูล ในขณะที่ JSONPath ถูกออกแบบมาเพื่อการดึงข้อมูลเท่านั้น
- การกำหนดตำแหน่งด้วย Regex:
=~ /foo/จะจับคู่กับส่วนของข้อความ (substring) โดยอัตโนมัติ ส่วน/^foo$/ใช้สำหรับการจับคู่แบบแม่นยำ
คำถามที่พบบ่อย
JSONPath เป็นภาษาสำหรับการดึงข้อมูลแบบบริสุทธิ์ ซึ่งรองรับการเลือกข้อมูล การกรองข้อมูล และการตัดข้อมูลเป็นช่วง ในขณะที่ jq เป็นภาษาสำหรับการสร้างคำสั่งค้นหาและการแปลงข้อมูลอย่างสมบูรณ์ พร้อมความสามารถในการควบคุมลำดับการทำงาน การใช้ตัวแปร และการเรียกใช้ฟังก์ชัน หากต้องการการดึงข้อมูลแบบง่าย JSONPath จะมีความยืดหยุ่นและสามารถนำไปใช้งานได้ในหลากหลายสภาพแวดล้อมมากกว่า แต่หากต้องการดำเนินการแปลงข้อมูล ก็ควรใช้ jq
ข้อกำหนดเดิมของ Goessner ร่วมกับการปรับปรุงตาม RFC 9535 โดยสอดคล้องกับ JaywayJsonPath (สำหรับ Java) และ jsonpath-plus (สำหรับ Node.js) ไม่รองรับการขยายเฉพาะไดอะเล็กต์ (เช่น สูตรสคริปต์ที่มีโค้ดแบบอิสระ)
ใช่ รหัส $..book[?(@.title =~ /^Harry.*/)] จะตรงกับหนังสือทุกเล่มที่ชื่อเริ่มต้นด้วยคำว่า “Harry” ส่วนรหัส ^ และ $ จะใช้สำหรับการจับคู่แบบตรงเต็มรูปแบบ
ใช่ ทั้ง JSON และตัวประเมิน JSONPath ล้วนอยู่ภายในเบราว์เซอร์ของคุณ โดยเอกสารและคำขอต่างๆ จะไม่ออกจากแท็บเดิมเลย
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
ตัวตรวจสอบอีเมล
ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
เครื่องมือสร้าง EditorConfig
สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Công cụ kiểm thử JSONPath [VI]
- JSONPath-Tester [DE]
- Testador de JSONPath [PT]
- JSONPath 테스터 [KO]
- أداة اختبار مسارات JSON (JSONPath) [AR]
- JSONPath-testare [SV]
- JSON Path Tester [NL]
- Testeur JSONPath [FR]
- Tester JSONPath [PL]
- JSON Path Tester [ID]
- JSONPath テスター [JA]
- Probador de JSONPath [ES]
- JSONPath Tester [EN]
- Tester JSONPath [IT]
- JSONPath Tester [RU]
- JSONPath Test Aracı [TR]
- JSON路径测试器 [ZH]