ทดสอบ JSONPath
เขียน JSONPath แล้วเห็นค่าที่ตรงกับเงื่อนไขทันที ไม่ต้องไล่อ่านทั้งก้อน
เช่น $.store.book[?(@.price < 300)].title
ใส่ JSON และ JSONPath เพื่อดูผลลัพธ์ประมวลผลในเบราว์เซอร์ของคุณทั้งหมด ข้อมูลไม่ถูกส่งขึ้นเซิร์ฟเวอร์
เกี่ยวกับเครื่องมือนี้
เครื่องมือ ทดสอบ JSONPath ช่วยดึงเฉพาะข้อมูลที่คุณต้องการออกจาก JSON ก้อนใหญ่ แทนที่จะเลื่อนอ่านทีละบรรทัดหรือกางโครงสร้างทีละชั้น
สถานการณ์ที่ใช้บ่อยที่สุดคือตอน ไล่ดู response จาก API ที่ตอบกลับมาหลายพันบรรทัด แต่คุณสนใจแค่ไม่กี่ฟิลด์ การเขียน JSONPath สั้น ๆ อย่าง $.data.items[*].id ให้คำตอบทันที และยังใช้เป็นตัวร่างก่อนนำไปใส่ในโค้ดหรือเครื่องมืออื่นที่รองรับ JSONPath เหมือนกัน
ความสามารถที่ทำให้ JSONPath คุ้มค่ากว่าการกดดูทีละชั้นคือ การกรองตามเงื่อนไข เช่น $.book[?(@.price < 300)] จะได้เฉพาะรายการที่ราคาต่ำกว่า 300 และ $..price จะกวาดค่า price ทุกตัวไม่ว่าจะซ้อนลึกแค่ไหน
เครื่องมือนี้ยังแสดง ตำแหน่งจริงของแต่ละค่า ที่ตรงกัน ทำให้รู้ว่าข้อมูลที่ได้มาจากส่วนไหนของโครงสร้าง มีประโยชน์มากตอนที่ผลลัพธ์ไม่ตรงกับที่คิด ทั้งหมดทำงานในเบราว์เซอร์ ไม่มีการส่งข้อมูลออก
วิธีใช้งาน
- 1วางข้อมูล JSON ที่ต้องการค้นลงในช่องแรก
- 2พิมพ์ JSONPath ในช่องด้านล่าง เช่น $.store.book[*].title
- 3ค่าที่ตรงกับเงื่อนไขจะแสดงทันที พร้อมจำนวนรายการที่พบ
- 4กด "ดูตำแหน่งของแต่ละค่า" เพื่อดูว่าค่านั้นอยู่ตรงไหนของโครงสร้าง
คำถามที่พบบ่อย
- JSONPath คืออะไร
- JSONPath คือภาษาสั้น ๆ สำหรับระบุตำแหน่งข้อมูลใน JSON คล้ายกับที่ XPath ใช้กับ XML เช่น $.users[0].name หมายถึงชื่อของผู้ใช้คนแรก ทำให้ดึงเฉพาะข้อมูลที่ต้องการออกมาได้โดยไม่ต้องเขียนโค้ด
- กรองข้อมูลตามเงื่อนไขได้ไหม
- ได้ ใช้รูปแบบ [?(@.field > ค่า)] เช่น $.book[?(@.price < 300)].title จะได้ชื่อหนังสือทุกเล่มที่ราคาต่ำกว่า 300 นี่คือความสามารถหลักที่ทำให้ JSONPath มีประโยชน์กว่าการไล่กดดูทีละชั้น
- เครื่องหมาย .. ต่างจาก . อย่างไร
- จุดเดียวคือการลงไปหนึ่งชั้น ส่วนสองจุด (..) คือค้นลึกลงไปทุกชั้นไม่ว่าจะซ้อนกันกี่ระดับ เช่น $..price จะได้ค่า price ทุกตัวในเอกสาร
- ทำไมไม่มีผลลัพธ์ทั้งที่ข้อมูลมีอยู่
- สาเหตุที่พบบ่อยคือลืมใส่ $ นำหน้า หรือชื่อคีย์สะกดไม่ตรง (ตัวพิมพ์เล็กใหญ่มีผล) ลองเริ่มจาก $..* เพื่อดูค่าทั้งหมดก่อน แล้วค่อยไล่แคบลง
- ข้อมูลของฉันถูกส่งออกไปไหม
- ไม่ ทุกอย่างประมวลผลในเบราว์เซอร์ของคุณ จึงวาง response ที่มีข้อมูลจริงจากระบบภายในได้