ตัวอย่าง JSONPath ช่วยให้การทดสอบ API ง่ายขึ้นได้อย่างไร

Ashley Innocent

Ashley Innocent

18 July 2025

ตัวอย่าง JSONPath ช่วยให้การทดสอบ API ง่ายขึ้นได้อย่างไร

Apidog สำหรับองค์กร

ติดตั้งภายในองค์กร

SSO & RBAC

รองรับ SOC 2

สำรวจ Apidog Enterprise

การพัฒนา API ที่ทันสมัยต้องการเทคนิคการดึงข้อมูลและการตรวจสอบที่มีประสิทธิภาพ นิพจน์ JSONPath มอบเครื่องมืออันทรงพลังให้นักพัฒนาเพื่อนำทางโครงสร้าง JSON ที่ซับซ้อนและดึงข้อมูลเฉพาะจุดได้อย่างแม่นยำ ไม่ว่าคุณจะสร้างการทดสอบอัตโนมัติ ประมวลผลการตอบสนองของ API หรือกรองชุดข้อมูลขนาดใหญ่ การทำความเข้าใจตัวอย่าง JSONPath ที่ใช้งานได้จริงจึงเป็นสิ่งจำเป็นสำหรับเวิร์กโฟลว์การพัฒนาที่คล่องตัว

💡
พร้อมที่จะเพิ่มประสิทธิภาพการทดสอบ API และการดึงข้อมูลของคุณแล้วหรือยัง? ดาวน์โหลด Apidog ฟรีและสัมผัสความสามารถ JSONPath ขั้นสูงด้วยอินเทอร์เฟซที่ใช้งานง่ายซึ่งทำให้การนำทางข้อมูลที่ซับซ้อนเป็นเรื่องง่าย
ปุ่ม

ทำความเข้าใจพื้นฐานของ JSONPath

JSONPath ทำงานเป็นภาษาคิวรีที่ออกแบบมาโดยเฉพาะสำหรับโครงสร้างข้อมูล JSON ช่วยให้คุณสามารถนำทางผ่านองค์ประกอบและแอตทริบิวต์ในโครงสร้าง JSON ดึงค่า และแม้กระทั่งใช้ตัวกรองได้ มีการใช้งานอย่างแพร่หลายในเครื่องมือทดสอบ API เช่น Postman, RestAssured, StepCI, k6 เป็นต้น ซึ่งแตกต่างจากวิธีการแยกวิเคราะห์แบบดั้งเดิม นิพจน์ JSONPath มีไวยากรณ์ที่กระชับซึ่งคล้ายกับ XPath สำหรับเอกสาร XML

องค์ประกอบรากในนิพจน์ JSONPath ใดๆ จะเริ่มต้นด้วยเครื่องหมายดอลลาร์ ($) ซึ่งแสดงถึงเอกสาร JSON ทั้งหมด จากจุดเริ่มต้นนี้ นักพัฒนาสามารถสำรวจอ็อบเจกต์ที่ซ้อนกัน อาร์เรย์ และใช้เงื่อนไขการกรองที่ซับซ้อนเพื่อดึงข้อมูลที่ต้องการได้อย่างแม่นยำ

องค์ประกอบไวยากรณ์ JSONPath ที่จำเป็น

การนำทางพาธพื้นฐาน

นิพจน์ JSONPath เป็นไปตามรูปแบบการเขียนจุดที่ตรงไปตรงมา นิพจน์ที่ง่ายที่สุดจะเข้าถึงคุณสมบัติโดยตรงของอ็อบเจกต์ราก:

$.propertyName
$.user.name
$.response.data.items

นิพจน์เหล่านี้จะนำทางผ่านลำดับชั้นของอ็อบเจกต์ที่ซ้อนกัน ทำให้นักพัฒนาสามารถเข้าถึงค่าที่ฝังลึกได้โดยไม่ต้องใช้ตรรกะการแยกวิเคราะห์ที่ซับซ้อน

รูปแบบการเข้าถึงอาร์เรย์

การนำทางอาร์เรย์ใน JSONPath รองรับวิธีการเข้าถึงหลายวิธี การเข้าถึงตามดัชนีใช้สัญลักษณ์วงเล็บเหลี่ยม:

$.users[0]          // องค์ประกอบแรก
$.users[1,3,5]      // หลายองค์ประกอบที่ระบุ
$.users[-1]         // องค์ประกอบสุดท้าย
$.users[1:3]        // การแบ่งส่วนจากดัชนี 1 ถึง 2

การดำเนินการแบบ Wildcard ช่วยให้สามารถดึงข้อมูลจำนวนมากได้:

$.users[*]          // องค์ประกอบอาร์เรย์ทั้งหมด
$.users[*].name     // ชื่อผู้ใช้ทั้งหมด
$.products[*].price // ราคาสินค้าทั้งหมด

การดำเนินการแบบ Recursive Descent

ตัวดำเนินการจุดสองจุด (..) ทำการค้นหาแบบเรียกซ้ำทั่วทั้งโครงสร้าง JSON:

$..name             // คุณสมบัติ 'name' ทั้งหมดในทุกระดับ
$..products[*]      // อาร์เรย์ผลิตภัณฑ์ทั้งหมดในทุกที่
$..price            // ค่าราคาทั้งหมดแบบเรียกซ้ำ

ตัวดำเนินการนี้พิสูจน์แล้วว่ามีค่าอย่างยิ่งเมื่อต้องรับมือกับโครงสร้าง JSON ที่ไม่รู้จักหรือเปลี่ยนแปลงได้ ซึ่งข้อมูลเป้าหมายอาจอยู่ในระดับการซ้อนที่แตกต่างกัน

เทคนิคการกรองขั้นสูง

การกรองตามเงื่อนไข

ตัวกรองคือการแสดงออกเชิงตรรกะที่ใช้ในการกรองอาร์เรย์ ตัวอย่างของนิพจน์ JSONPath ที่มีตัวกรองคือ ... โดยที่ @ แทนรายการอาร์เรย์ปัจจุบันหรืออ็อบเจกต์ที่กำลังประมวลผล นิพจน์ตัวกรองช่วยให้สามารถเลือกข้อมูลที่ซับซ้อนตามเกณฑ์ที่ระบุได้:

$.users[?(@.age > 18)]              // ผู้ใช้ที่มีอายุมากกว่า 18 ปี
$.products[?(@.price < 50)]         // สินค้าที่ราคาต่ำกว่า $50
$.orders[?(@.status == 'pending')]  // เฉพาะคำสั่งซื้อที่รอดำเนินการ

สัญลักษณ์ @ แสดงถึงองค์ประกอบอาร์เรย์ปัจจุบันที่กำลังประเมิน ซึ่งช่วยให้สามารถกรองตามคุณสมบัติที่ซับซ้อนได้

การดำเนินการเชิงตรรกะที่ซับซ้อน

คุณสามารถสร้างตัวกรองที่ซับซ้อนยิ่งขึ้นด้วยตัวดำเนินการเชิงตรรกะ && และ || สามารถรวมเงื่อนไขหลายอย่างเข้าด้วยกันโดยใช้ตัวดำเนินการบูลีน:

$.products[?(@.price > 10 && @.category == 'electronics')]
$.users[?(@.age >= 21 || @.verified == true)]
$.orders[?(@.total > 100 && @.status != 'cancelled')]

นิพจน์เหล่านี้ช่วยให้สามารถกรองข้อมูลได้อย่างแม่นยำตามเกณฑ์หลายอย่าง ซึ่งจำเป็นสำหรับการประมวลผลการตอบสนองของ API ที่ซับซ้อน

การจับคู่สตริงและรูปแบบ

การกรองตามสตริงรองรับการดำเนินการเปรียบเทียบที่หลากหลาย:

$.products[?(@.name =~ /^iPhone/)]      // ชื่อที่ขึ้นต้นด้วย 'iPhone'
$.users[?(@.email =~ /.*@gmail\.com/)]  // ผู้ใช้ Gmail
$.items[?(@.description contains 'sale')] // สินค้าลดราคา

การรองรับนิพจน์ทั่วไปแตกต่างกันไปในแต่ละการใช้งาน JSONPath แต่เครื่องมือสมัยใหม่ส่วนใหญ่รองรับการจับคู่รูปแบบพื้นฐาน

การประยุกต์ใช้การทดสอบ API ในโลกจริง

ตัวอย่างการตรวจสอบการตอบสนอง

การทดสอบ API มักจะต้องมีการตรวจสอบองค์ประกอบการตอบสนองที่เฉพาะเจาะจง ตัวอย่าง JSONPath แสดงให้เห็นถึงกลยุทธ์การตรวจสอบที่มีประสิทธิภาพ:

// ตรวจสอบการตอบสนองการลงทะเบียนผู้ใช้
$.response.user.id              // ดึง ID ผู้ใช้
$.response.user.email           // ตรวจสอบการกำหนดอีเมล
$.response.permissions[*].name  // ตรวจสอบสิทธิ์ที่ได้รับมอบหมาย

นิพจน์เหล่านี้ช่วยให้สามารถตรวจสอบการตอบสนองของ API โดยอัตโนมัติ ทำให้มั่นใจในความสมบูรณ์ของข้อมูลและการทำงานที่เหมาะสม

เวิร์กโฟลว์การแปลงข้อมูล

นิพจน์ JSONPath อำนวยความสะดวกในการแปลงข้อมูลระหว่างรูปแบบต่างๆ:

// ดึงข้อมูลแคตตาล็อกสินค้า
$.catalog.products[*].{
  id: @.productId,
  name: @.title,
  cost: @.pricing.retail
}

แนวทางนี้ช่วยปรับปรุงการดำเนินการแมปข้อมูลให้คล่องตัว โดยเฉพาะอย่างยิ่งเมื่อรวมบริการ API หลายรายการ

การจัดการข้อผิดพลาดและการดีบัก

นิพจน์ JSONPath ช่วยในการตรวจจับข้อผิดพลาดและการดีบัก:

$.errors[*].message             // ข้อความแสดงข้อผิดพลาดทั้งหมด
$.response.warnings[?(@.level == 'critical')]  // คำเตือนที่สำคัญ
$..stackTrace                   // สแต็กเทรซทั้งหมด

รูปแบบเหล่านี้ช่วยให้นักพัฒนาสามารถระบุและแก้ไขปัญหาในระหว่างขั้นตอนการพัฒนาและทดสอบ API ได้

กลยุทธ์การเพิ่มประสิทธิภาพ

การเลือกพาธที่มีประสิทธิภาพ

การปรับนิพจน์ JSONPath ให้เหมาะสมช่วยเพิ่มประสิทธิภาพของแอปพลิเคชันได้อย่างมาก พาธที่เฉพาะเจาะจงมีประสิทธิภาพดีกว่าการดำเนินการแบบ wildcard:

// มีประสิทธิภาพ - พาธโดยตรง
$.users[0].profile.name

// มีประสิทธิภาพน้อยกว่า - การค้นหาแบบ wildcard
$.users[*].profile.name

การเข้าถึงพาธโดยตรงช่วยลดภาระการคำนวณ โดยเฉพาะอย่างยิ่งกับชุดข้อมูล JSON ขนาดใหญ่

รูปแบบการแคชและการนำกลับมาใช้ใหม่

นิพจน์ JSONPath ที่คอมไพล์แล้วให้ประโยชน์ด้านประสิทธิภาพเมื่อใช้ซ้ำๆ:

// คอมไพล์ครั้งเดียว ใช้หลายครั้ง
const userNamePath = JSONPath.compile('$.users[*].name');
const userNames = userNamePath.evaluate(jsonData);

แนวทางนี้ช่วยลดภาระการแยกวิเคราะห์ในการดำเนินการที่มีความถี่สูง

การรวมเข้ากับเครื่องมือพัฒนาที่ทันสมัย

ประโยชน์ของการรวม Apidog

Apidog ให้การสนับสนุน JSONPath อย่างครอบคลุมสำหรับการทดสอบและพัฒนา API แพลตฟอร์มนี้มีตัวสร้าง JSONPath แบบภาพ การทดสอบนิพจน์แบบเรียลไทม์ และความสามารถในการตรวจสอบอัตโนมัติ นักพัฒนาสามารถสร้างเวิร์กโฟลว์การดึงข้อมูลที่ซับซ้อนได้โดยไม่ต้องเขียนนิพจน์ด้วยตนเอง

ปุ่ม

ตัวดีบัก JSONPath ของเครื่องมือนี้ช่วยให้สามารถประเมินนิพจน์ทีละขั้นตอน ทำให้เข้าใจและปรับแต่งคิวรีที่ซับซ้อนได้ง่ายขึ้น นอกจากนี้ คุณสมบัติการทำงานร่วมกันของ Apidog ยังช่วยให้ทีมสามารถแบ่งปันเทมเพลต JSONPath และแนวปฏิบัติที่ดีที่สุดได้

รูปภาพที่แสดงแดชบอร์ดของ Apidog

นี่คือวิธีที่ Apidog สามารถช่วยให้คุณใช้ประโยชน์จากพลังของ JSONPath ได้อย่างมีประสิทธิภาพ:

อันดับแรก คุณจะต้องส่งคำขอไปยัง API ของคุณและดูการตอบสนองโดยตรงด้วย Apidog จากนั้นคุณสามารถใช้อินเทอร์เฟซที่ให้มาเพื่อใช้คิวรี JSONPath เพื่อดึงชื่อภาพยนตร์แอ็คชั่นทั้งหมดจากการตอบสนอง

หน้า Post Processors ของ Apidog

จากภาพหน้าจอด้านบน คุณจะเห็นว่า (1) เราส่งคำขอ GET ไปยังเซิร์ฟเวอร์ของเรา - ฉันสร้าง เซิร์ฟเวอร์ Express แบบง่าย โดยใช้ข้อมูล JSON ที่เราได้รับข้างต้นเป็นคำตอบ จากนั้นฉันสลับไปที่แท็บ Post Processors (2) และเพิ่มกระบวนการใหม่ - Extract Variable (3)

เมื่อคลิกที่ Extract Variable คุณจะเห็นหน้าด้านล่างนี้;

หน้าการกำหนดค่า JsonPath สำหรับการดึงข้อมูลของ Apidog

คุณสามารถตั้งชื่อตัวแปร (1) ได้หากต้องการ ตัวแปรมีประโยชน์หากคุณต้องการตรวจสอบหรือสร้าง API ที่แตกต่างกัน และคุณต้องการที่เดียวในการจัดการการกำหนดค่าทั่วไป ตัวแปรที่นี่เปรียบเสมือนไฟล์ .env

ขั้นตอนต่อไปคือการพิมพ์ JSONPath ที่คุณต้องการกรองออก (2) ในกรณีของเราที่นี่ เราต้องการรับชื่อภาพยนตร์ในอาร์เรย์แอ็คชั่นของ JSON ของเรา เมื่อคุณพิมพ์พาธปัจจุบันแล้ว ให้คลิกปุ่มลูกศร (3) เพื่อเปิดหน้าการตอบสนองของคิวรีดังที่แสดงด้านล่าง

การตอบสนอง jsonpath apidog

ดังที่คุณเห็นจากการตอบสนองข้างต้น Apidog ได้กรองชื่อภาพยนตร์ในอาร์เรย์แอ็คชั่นออกและแสดงให้เราเห็น

หากคุณต้องการลองใช้สิ่งนี้ โปรดดาวน์โหลดและติดตั้ง Apidog และส่งคำขอแรกของคุณด้วย

การรวมเฟรมเวิร์กการทดสอบ

เฟรมเวิร์กการทดสอบยอดนิยมรวมฟังก์ชัน JSONPath ไว้ด้วย:

// การรวม Jest
expect(jsonPath.query(response, '$.users[*].name')).toContain('John');

// Mocha กับ JSONPath
const userCount = jsonPath.query(data, '$.users.length')[0];
assert.equal(userCount, 5);

การรวมเหล่านี้ช่วยปรับปรุงเวิร์กโฟลว์การทดสอบอัตโนมัติและปรับปรุงความสามารถในการบำรุงรักษาการทดสอบ

ตัวอย่าง JSONPath ทั่วไปตามกรณีการใช้งาน

สถานการณ์ API ของอีคอมเมิร์ซ

API ของอีคอมเมิร์ซได้รับประโยชน์จากตัวอย่าง JSONPath เฉพาะทาง:

// ผลการค้นหาสินค้า
$.products[?(@.inStock == true && @.price <= 100)]

// การประมวลผลคำสั่งซื้อ
$.orders[?(@.status == 'shipped')].trackingNumber

// ข้อมูลลูกค้า
$.customers[?(@.loyaltyLevel == 'premium')].benefits[*]

นิพจน์เหล่านี้จัดการความต้องการในการดึงข้อมูลอีคอมเมิร์ซทั่วไปได้อย่างมีประสิทธิภาพ

รูปแบบ API ของโซเชียลมีเดีย

API ของโซเชียลมีเดียต้องการแนวทาง JSONPath ที่แตกต่างกัน:

// เมตริกการมีส่วนร่วมของโพสต์
$.posts[*].{likes: @.likes, shares: @.shares, comments: @.comments.length}

// การกรองกิจกรรมผู้ใช้
$.activities[?(@.type == 'post' && @.timestamp > '2024-01-01')]

// การดูแลเนื้อหา
$.reports[?(@.severity == 'high' && @.resolved == false)]

รูปแบบเหล่านี้ตอบสนองความต้องการในการประมวลผลข้อมูลโซเชียลมีเดียทั่วไป

การประยุกต์ใช้ API ทางการเงิน

API ทางการเงินต้องการการดึงข้อมูลที่แม่นยำ:

// การกรองธุรกรรม
$.transactions[?(@.amount > 1000 && @.category == 'investment')]

// การรวมยอดคงเหลือในบัญชี
$.accounts[*].balances[?(@.currency == 'USD')].amount

// ข้อมูลการประเมินความเสี่ยง
$.assessments[?(@.score < 600)].recommendations[*]

ตัวอย่างเหล่านี้แสดงให้เห็นถึงประโยชน์ของ JSONPath ในสถานการณ์การประมวลผลข้อมูลทางการเงิน

เทคนิคการจัดการข้อผิดพลาดและการดีบัก

ข้อผิดพลาดของนิพจน์ทั่วไป

นิพจน์ JSONPath อาจล้มเหลวเนื่องจากปัญหาต่างๆ การทำความเข้าใจรูปแบบข้อผิดพลาดทั่วไปช่วยป้องกันปัญหาได้:

// ไวยากรณ์ไม่ถูกต้อง
$.users[name]           // ไม่มีเครื่องหมายคำพูด
$.users[?@.age > 18]    // ไม่มีวงเล็บ

// ไวยากรณ์ที่ถูกต้อง
$.users['name']         // การเข้าถึงคุณสมบัติ
$.users[?(@.age > 18)]  // ไวยากรณ์ตัวกรองที่เหมาะสม

การตรวจสอบไวยากรณ์ที่เหมาะสมช่วยป้องกันข้อผิดพลาดรันไทม์และปรับปรุงความน่าเชื่อถือของแอปพลิเคชัน

กลยุทธ์การดีบัก

การดีบักที่มีประสิทธิภาพต้องการแนวทางที่เป็นระบบ:

  1. การประเมินทีละขั้นตอน: แบ่งนิพจน์ที่ซับซ้อนออกเป็นส่วนย่อยๆ
  2. ทดสอบด้วยข้อมูลตัวอย่าง: ตรวจสอบนิพจน์ด้วยชุดข้อมูลที่รู้จัก
  3. ใช้เครื่องมือแสดงภาพ: ใช้ตัวประเมิน JSONPath ออนไลน์สำหรับการทดสอบ
  4. บันทึกผลลัพธ์ระหว่างกลาง: ส่งออกผลลัพธ์คิวรีบางส่วนเพื่อการตรวจสอบ

กลยุทธ์เหล่านี้ช่วยให้นักพัฒนาสามารถระบุและแก้ไขปัญหาที่เกี่ยวข้องกับ JSONPath ได้อย่างรวดเร็ว

แนวปฏิบัติที่ดีที่สุดสำหรับการใช้งาน JSONPath

ความสามารถในการอ่านนิพจน์

นิพจน์ JSONPath ที่อ่านง่ายช่วยปรับปรุงความสามารถในการบำรุงรักษาโค้ด:

// ดี - ชัดเจนและอธิบายได้
const activePremiumUsers = '$.users[?(@.status == "active" && @.tier == "premium")]';

// ไม่ดี - คลุมเครือและไม่ชัดเจน
const users = '$.u[?(@.s=="a"&&@.t=="p")]';

นิพจน์ที่อธิบายได้ช่วยเพิ่มความร่วมมือในทีมและลดเวลาในการดีบัก

ข้อควรพิจารณาด้านความปลอดภัย

นิพจน์ JSONPath ควรตรวจสอบข้อมูลอินพุตเพื่อป้องกันช่องโหว่ด้านความปลอดภัย:

// ตรวจสอบโครงสร้าง JSON ก่อนการคิวรี
if (jsonData && typeof jsonData === 'object') {
  const result = JSONPath.query(jsonData, expression);
  // ประมวลผลผลลัพธ์อย่างปลอดภัย
}

การตรวจสอบอินพุตช่วยป้องกันปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นและการหยุดทำงานของแอปพลิเคชัน

การตรวจสอบประสิทธิภาพ

ตรวจสอบประสิทธิภาพของนิพจน์ JSONPath ในสภาพแวดล้อมการผลิต:

const startTime = performance.now();
const result = JSONPath.query(largeDataset, complexExpression);
const endTime = performance.now();
console.log(`JSONPath execution time: ${endTime - startTime}ms`);

การตรวจสอบประสิทธิภาพช่วยระบุจุดคอขวดและปรับปรุงการทำงานที่สำคัญให้เหมาะสม

การพัฒนาและแนวโน้มในอนาคต

ความสามารถของตัวกรองที่ได้รับการปรับปรุง

การใช้งาน JSONPath ในอนาคตอาจรวมถึงตัวเลือกการกรองที่ซับซ้อนยิ่งขึ้น:

การปรับปรุงเหล่านี้จะขยายการใช้งาน JSONPath ไปยังกรณีการใช้งานที่หลากหลาย

วิวัฒนาการของการรวมเครื่องมือ

เครื่องมือพัฒนายังคงขยายการรองรับ JSONPath:

การปรับปรุงเหล่านี้ทำให้ JSONPath เข้าถึงได้ง่ายขึ้นสำหรับนักพัฒนาทุกระดับทักษะ

บทสรุป

ตัวอย่าง JSONPath แสดงให้เห็นถึงความสามารถอันทรงพลังสำหรับการดึงและจัดการข้อมูล JSON ตั้งแต่การเข้าถึงคุณสมบัติพื้นฐานไปจนถึงการดำเนินการกรองที่ซับซ้อน นิพจน์เหล่านี้ช่วยให้นักพัฒนาสามารถจัดการความต้องการในการประมวลผลข้อมูลที่ซับซ้อนได้อย่างมีประสิทธิภาพ การรวม JSONPath เข้ากับเครื่องมือพัฒนาที่ทันสมัย เช่น Apidog ช่วยเพิ่มประสิทธิภาพการทำงานและการทำงานร่วมกัน

การเชี่ยวชาญตัวอย่าง JSONPath ต้องอาศัยการฝึกฝนกับสถานการณ์จริงและทำความเข้าใจทั้งไวยากรณ์พื้นฐานและคุณสมบัติขั้นสูง เมื่อ API มีความซับซ้อนมากขึ้นและแอปพลิเคชันที่ขับเคลื่อนด้วยข้อมูลเติบโตขึ้นในความซับซ้อน ทักษะ JSONPath จึงกลายเป็นสิ่งจำเป็นสำหรับเวิร์กโฟลว์การพัฒนาที่มีประสิทธิภาพ

ปุ่ม

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API