การตรวจสอบ JSON Schema: คู่มือฉบับสมบูรณ์สำหรับการกำหนดและตรวจสอบข้อมูล JSON
เรียนรู้ว่า JSON Schema ทำงานเป็นสัญญาสำหรับข้อมูลของคุณอย่างไร -- ตั้งแต่ประเภทพื้นฐานและฟิลด์บังคับ ไปจนถึงการตรวจสอบรูปแบบ เวอร์ชันร่าง และกรณีใช้งานจริงสำหรับ API และไฟล์การตั้งค่า
JSON Schema คืออะไร?
JSON Schema เป็นภาษาประกาศที่ช่วยให้คุณอธิบายโครงสร้าง เนื้อหา และข้อจำกัดของเอกสาร JSON คิดว่ามันเป็นสัญญาระหว่างผู้ผลิตและผู้บริโภคข้อมูล ผู้ผลิตบอกว่า "ฉันจะส่งอ็อบเจกต์ที่มีสตริง name และจำนวนเต็ม age เสมอ" และผู้บริโภคสามารถตรวจสอบว่า payload ที่เข้ามาทุกรายการตรงตามสัญญานั้นจริงก่อนประมวลผล
สิ่งนี้สำคัญเพราะ JSON ไม่มีสคีมาในตัว ค่า JSON ที่ถูกต้องใดๆ ก็เป็นสิ่งที่ถูกกฎหมายอย่างสมบูรณ์ อิสรภาพนี้ดีมากสำหรับการสร้างต้นแบบอย่างรวดเร็ว แต่กลายเป็นปัญหาเมื่อสองระบบต้องตกลงกันว่าข้อมูลควรมีหน้าตาอย่างไร
ทำไม JSON Schema จึงสำคัญสำหรับ API
REST API สื่อสารผ่าน JSON payload และทุก endpoint มีรูปร่างโดยนัย JSON Schema ทำให้รูปร่างนั้นชัดเจนและอ่านได้โดยเครื่อง เมื่อคุณมีสคีมา คุณสามารถ:
- ตรวจสอบคำขอ บนเซิร์ฟเวอร์ก่อนที่จะถึงตรรกะทางธุรกิจของคุณ
- ตรวจสอบการตอบกลับ ในการทดสอบแบบบูรณาการเพื่อจับการเปลี่ยนแปลงที่ทำลาย
- สร้างเอกสารอัตโนมัติ -- เครื่องมืออย่าง Swagger/OpenAPI ใช้ JSON Schema เป็นแกนหลัก
- สร้างโค้ด -- เครื่องมือแปลงสคีมาเป็น TypeScript, Go struct, Python dataclass ขจัดการกำหนดประเภทด้วยตนเอง
พื้นฐาน JSON Schema
JSON Schema ทุกตัวเป็นอ็อบเจกต์ JSON สคีมาที่ง่ายที่สุดคืออ็อบเจกต์ว่าง {} ซึ่งยอมรับ JSON ที่ถูกต้องทุกประเภท
ประเภทพื้นฐาน
คีย์เวิร์ด type เป็นรากฐาน JSON Schema รู้จักประเภทพื้นฐานหกประเภท:
| ประเภท | ตัวอย่าง JSON | หมายเหตุ |
|---|---|---|
| string | "สวัสดี" | ค่าข้อความ จำกัดได้ด้วย minLength, maxLength, pattern |
| number | 3.14 | ค่าตัวเลขใดๆ ใช้ minimum, maximum, multipleOf |
| integer | 42 | จำนวนเต็มเท่านั้น ข้อจำกัดเดียวกับ number |
| boolean | true | เฉพาะ true หรือ false |
| object | {"คีย์": "ค่า"} | คู่คีย์-ค่า กำหนดด้วย properties, required, additionalProperties |
| array | [1, 2, 3] | รายการลำดับ ใช้ items, minItems, maxItems, uniqueItems |
| null | null | การไม่มีค่า มักรวมกับประเภทอื่น |
คุณสมบัติและฟิลด์บังคับ
คีย์เวิร์ด properties กำหนดว่าคีย์ใดที่คาดหวัง คีย์เวิร์ด required ระบุว่าตัวใดต้องมี
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name", "email"]
}
ควบคุมคุณสมบัติเพิ่มเติม
"additionalProperties": false ทำให้สคีมาเข้มงวด -- อนุญาตเฉพาะคีย์ที่ระบุไว้เท่านั้น
additionalProperties: false ร่วมกับคีย์เวิร์ดการรวมอย่าง allOf คุณสมบัติที่กำหนดในซับสคีมาอื่นอาจถูกปฏิเสธ
การตรวจสอบรูปแบบ
คีย์เวิร์ด format ให้การตรวจสอบเชิงความหมายที่เกินกว่าประเภทพื้นฐาน
รูปแบบในตัว
| รูปแบบ | ตัวอย่างค่า | กรณีใช้งาน |
|---|---|---|
| date-time | 2026-03-27T10:30:00Z | ประทับเวลา ISO 8601 สำหรับเหตุการณ์และบันทึก |
| date | 2026-03-27 | วันที่ปฏิทินไม่มีเวลา |
[email protected] | แบบฟอร์มติดต่อ การลงทะเบียนผู้ใช้ | |
| uri | https://example.com/api | URL webhook ลิงก์ทรัพยากร |
| uuid | 550e8400-e29b-41d4-a716-446655440000 | ตัวระบุเฉพาะ คีย์หลัก |
| ipv4 | 192.168.1.1 | การตั้งค่าเครือข่าย ที่อยู่เซิร์ฟเวอร์ |
รูปแบบเป็นคำอธิบาย vs การยืนยัน
โดยค่าเริ่มต้น format เป็นคำอธิบาย ไม่ใช่การยืนยัน ใน Draft 2020-12 คุณต้องเปิดใช้งานการยืนยันรูปแบบอย่างชัดเจน
format กับ regex pattern เสมอหากการตรวจสอบอย่างเข้มงวดมีความสำคัญ
เวอร์ชันร่าง: Draft-07 vs 2020-12
สองเวอร์ชันที่คุณจะพบบ่อยที่สุดคือ Draft-07 และ Draft 2020-12
ความแตกต่างหลัก
| คุณสมบัติ | Draft-07 | Draft 2020-12 |
|---|---|---|
| prefixItems | ไม่มี | แทนที่การตรวจสอบ tuple |
| $dynamicRef | ไม่มี | ใหม่ -- การอ้างอิงสคีมาแบบไดนามิก |
| unevaluatedProperties | ไม่มี | แก้ปัญหา additionalProperties + allOf |
| การสนับสนุนไลบรารี | ยอดเยี่ยม | ดีและเติบโต |
ควรเลือกเวอร์ชันไหน?
เลือก Draft-07 หากระบบนิเวศของคุณใช้อยู่แล้วหรือต้องการความเข้ากันได้สูงสุด
เลือก Draft 2020-12 หากเริ่มโปรเจกต์ใหม่ที่ไม่มีข้อจำกัดเดิม
สรุป
สำหรับโปรเจกต์ใหม่ส่วนใหญ่ในปี 2026 Draft 2020-12 เป็นตัวเลือกเริ่มต้นที่ดีกว่า
วิธีใช้เครื่องมือสร้าง JSON Schema ของเรา
เครื่องมือสร้าง JSON Schema ฟรีของเรารับ JSON payload ใดก็ได้และสร้างสคีมาที่ถูกต้องโดยอัตโนมัติ ทุกอย่างทำงานในเบราว์เซอร์ของคุณ
คู่มือทีละขั้นตอน
- เปิดเครื่องมือ เครื่องมือสร้าง JSON Schema
- วาง JSON ของคุณ ลงในพื้นที่ป้อนข้อมูล
- คลิกสร้าง แล้วเครื่องมือจะวิเคราะห์ทุกฟิลด์ อนุมานประเภท และตรวจจับรูปแบบ
- ตรวจสอบผลลัพธ์ -- สคีมาที่สร้างจะปรากฏในแผงผลลัพธ์
- สลับไปที่แท็บตรวจสอบ เพื่อทดสอบสคีมากับ JSON payload ใหม่
- คัดลอกสคีมา ด้วยคลิกเดียวและรวมเข้ากับโปรเจกต์ของคุณ
หมายเหตุเรื่องความเป็นส่วนตัว
เครื่องมือสร้าง JSON Schema ของเราทำงาน 100% ในเบราว์เซอร์ของคุณ ข้อมูล JSON สคีมาที่สร้าง และผลการตรวจสอบจะไม่ออกจากอุปกรณ์ของคุณเด็ดขาด
สร้าง JSON Schema ของคุณทันที
วาง JSON payload ใดก็ได้ แล้วรับสคีมาพร้อมใช้งานพร้อมการอนุมานประเภท ฟิลด์บังคับ และการตรวจจับรูปแบบ -- 100% ในเบราว์เซอร์ของคุณ