ตัวทดสอบ JSONPath
ค้น JSON ด้วยนิพจน์ JSONPath และดูทุกผลลัพธ์พร้อมเส้นทางของมัน
เกี่ยวกับเครื่องมือนี้
ทดสอบนิพจน์ JSONPath กับ JSON ของคุณเอง แล้วดูทุกผลลัพธ์พร้อมทั้งค่าและเส้นทางที่เป็นรูปธรรม รองรับไวยากรณ์ที่ครอบคลุมการใช้งานประจำวัน: สัญกรณ์จุดและวงเล็บ ดัชนีอาร์เรย์ (รวมถึงค่าติดลบ) ไวลด์การ์ด ยูเนียน (['a','b']) และการไล่ลงแบบเรียกซ้ำ ($..price)
ผลลัพธ์เส้นทางของแต่ละรายการคือส่วนที่มีประโยชน์อย่างเงียบ ๆ: ค้น $..id บนเอกสารที่ซ้อนลึก แล้วแต่ละผลลัพธ์จะบอกคุณอย่างชัดเจนว่ามันอยู่ที่ใด ($.data.items[3].id) พร้อมวางลงในโค้ดได้ทันที มันเปลี่ยน “อยู่ที่ไหนสักแห่งในก้อนนี้” ให้กลายเป็นที่อยู่ที่แน่นอน
นิพจน์ตัวกรอง ([?(@.price < 10)]) ยังไม่ถูกอิมพลีเมนต์ — เครื่องมือบอกตรง ๆ แทนที่จะคืนผลลัพธ์ที่ผิด สำหรับการดึงข้อมูลเชิงโครงสร้าง ซึ่งเป็นการใช้งาน JSONPath ส่วนใหญ่ ทุกอย่างทำงานได้
คำถามที่พบบ่อย
- $.a.b กับ $..b ต่างกันอย่างไร?
- $.a.b เดินตามเส้นทางที่แน่นอนเส้นเดียว: คีย์ a ที่ราก แล้วคีย์ b ข้างใน ส่วน $..b (การไล่ลงแบบเรียกซ้ำ) หา b ทุกตัวที่ใดก็ได้ในเอกสาร ที่ความลึกใดก็ได้ การไล่ลงแบบเรียกซ้ำทรงพลังแต่ก็สร้างความประหลาดใจได้ — มันจับคีย์ b ที่ซ้อนอยู่ในสิ่งที่คุณไม่ได้นึกถึงด้วย
- จะเข้าถึงคีย์ที่มีช่องว่างหรือขีดกลางได้อย่างไร?
- ใช้สัญกรณ์วงเล็บพร้อมอัญประกาศ: $['my key'] หรือ $.data['content-type'] สัญกรณ์จุดใช้ได้เฉพาะกับคีย์ที่มีชื่อเหมือนตัวระบุที่ถูกต้องเท่านั้น
- ดัชนีอาร์เรย์ติดลบใช้ได้ไหม?
- ได้ — [-1] คือสมาชิกตัวสุดท้าย [-2] คือตัวรองสุดท้าย ตามธรรมเนียมที่ Python ทำให้แพร่หลายและ RFC 9535 รับมาใช้ ส่วน [0] ยังคงเป็นสมาชิกตัวแรก
- JSONPath ถูกกำหนดเป็นมาตรฐานแล้วหรือยัง?
- ตั้งแต่ปี 2024 เป็นต้นมา แล้ว — RFC 9535 กำหนดไวยากรณ์และความหมายไว้ อิมพลีเมนต์ที่เขียนขึ้นก่อนหน้านั้นต่างกันในกรณีขอบ (โดยเฉพาะตัวกรองและยูเนียน) นิพจน์เดียวกันจึงอาจให้ผลต่างกันในแต่ละไลบรารี ควรทดสอบกับอิมพลีเมนต์ที่คุณใช้จริง