JSON Schema Validator: ตรวจสอบ JSON Data กับ Schema Definitions
JSON Schema Validator ตรวจสอบข้อมูล JSON กับ schema definitions ด้วยการ validate แบบ real-time, error reports ละเอียด, รองรับ JSON Schema Draft-07 ขึ้นไป — ทำงานในเบราว์เซอร์ของคุณ
Table of Contents
JSON ได้กลายเป็นรูปแบบมาตรฐานสำหรับการแลกเปลี่ยนข้อมูลบนเว็บ ไม่ว่าจะเป็น REST API, config file, หรือ message payload ระหว่าง microservices ปัญหาที่นักพัฒนาเจอบ่อยที่สุดคือ "data ที่ได้มาถูกต้องตามโครงสร้างที่คาดหวังหรือไม่" — และนี่คือจุดที่ JSON Schema Validator เข้ามาช่วย โดยเป็นเครื่องมือที่ให้คุณกำหนด schema ของข้อมูลแล้วตรวจสอบว่า JSON ที่รับเข้ามาผ่านเงื่อนไขหรือไม่ แบบ real-time ทั้งหมดทำงานในเบราว์เซอร์ของคุณ ไม่มีข้อมูลถูกส่งไปที่ server ใด ๆ
JSON Schema คือภาษาสำหรับบรรยายและตรวจสอบโครงสร้างของ JSON document คิดง่าย ๆ ว่ามันคือ "type definition" สำหรับ JSON ที่บอกว่า field ไหนต้องมี, มี type อะไร, อยู่ในรูปแบบ (format) ไหน และมีค่าเป็นไปตามเงื่อนไขหรือไม่ เมื่อ schema ถูกนิยามชัดเจน ทีมพัฒนาก็สามารถตกลงกันได้ว่า API ควร return หรือรับอะไร ลด bugs ที่เกิดจาก malformed data ลงได้มาก
บทความนี้จะพาคุณรู้จักกับ JSON Schema Validator ของเรา ทำความเข้าใจว่ามันทำงานอย่างไร, มีฟีเจอร์อะไรบ้าง, วิธีใช้งาน, พร้อมตัวอย่าง schema และกรณีการใช้งานจริงในโลกของการพัฒนาซอฟต์แวร์
ทำไมต้องใช้ JSON Schema Validator?
- Real-time feedback — เมื่อคุณแก้ schema หรือ JSON data, ผลการ validate จะอัปเดตทันที ไม่ต้องกดปุ่มรอ ช่วยให้ iterate ได้เร็วขณะพัฒนา
- ลด bugs จาก malformed data — ตรวจจับ field ที่หายไป, type ผิด, หรือค่านอกเหนือจากที่กำหนดก่อนที่ data จะเข้าสู่ระบบ production
- ทำงาน 100% client-side — ข้อมูลทั้งหมดถูกประมวลผลในเบราว์เซอร์ของคุณ ไม่มีการส่งไป server ใด ๆ เหมาะสำหรับข้อมูลที่ละเอียดอ่อน (sensitive data)
- Error messages ละเอียด — รายงานบอก path ของ field ที่มีปัญหา, error keyword, และคำอธิบาย ช่วยให้ debug ได้รวดเร็ว
- รองรับ JSON Schema Draft-07 ขึ้นไป — ใช้ AJV ซึ่งเป็น JSON Schema validator ที่เร็วและเสถียรที่สุดตัวหนึ่งของ JavaScript ecosystem
- พร้อมตัวอย่าง schema — มี built-in examples เช่น User Profile, Product Catalog, API Response ให้เริ่มทดลองได้ทันทีโดยไม่ต้องเขียน schema จากศูนย์
ฟีเจอร์เด่น
| ฟีเจอร์ | ฟังก์ชันการทำงาน |
|---|---|
| Real-time validation | validate JSON ทันทีที่มีการเปลี่ยนแปลง schema หรือ data |
| JSON Schema Draft-07+ | รองรับมาตรฐานล่าสุดผ่าน AJV library |
| Detailed error reports | แสดง path, keyword, และ message ของแต่ละ error |
| Built-in examples | มี schema ตัวอย่าง User Profile, Product Catalog, API Response |
| Copy to clipboard | คัดลอกผลลัพธ์ validation เพื่อใช้งานต่อ |
| Keyboard shortcuts | กด Ctrl+Enter (หรือ Cmd+Enter บน macOS) เพื่อ validate |
| Privacy-first | ทำงาน 100% ในเบราว์เซอร์ ไม่ส่งข้อมูลออกไป |
- ตัว validator ตั้งค่า allErrors: true เพื่อให้เห็น error ทั้งหมดในครั้งเดียว ไม่ใช่หยุดที่ error แรก
- โหมด verbose: true แสดงข้อมูลเชิงลึก เช่น schema path และ data path ของแต่ละ error ช่วยให้ debug ง่ายขึ้น
- ตั้งค่า strict: false เพื่อให้ใช้ schema ที่อาจมี keyword นอกเหนือมาตรฐานได้โดยไม่โดน reject ตั้งแต่ compile time
วิธีใช้งาน JSON Schema Validator
- เปิดเครื่องมือ JSON Schema Validator — คุณจะเห็นช่อง schema ฝั่งซ้ายและช่อง JSON data ฝั่งขวา
- วางหรือพิมพ์ JSON Schema ของคุณลงในช่อง schema ด้านซ้าย หรือเลือก built-in example จาก dropdown เพื่อเริ่มต้นอย่างรวดเร็ว
- วางหรือพิมพ์ JSON data ที่ต้องการตรวจสอบลงในช่องด้านขวา ขนาด input จำกัดที่ 1MB และ timeout 5 วินาทีเพื่อป้องกันการค้าง
- ผลการ validate จะแสดงขึ้นมาแบบ real-time ด้านล่าง — ถ้าผ่านจะมีเครื่องหมายสีเขียว ถ้าไม่ผ่านจะมีรายการ error พร้อม path และคำอธิบาย
- ใช้ปุ่ม "Copy" เพื่อคัดลอกผลลัพธ์ หรือกด Ctrl+Enter (Cmd+Enter บน macOS) เพื่อ validate ด้วย keyboard shortcut
ทำความเข้าใจ JSON Schema Validation
JSON Schema คือ vocabulary ที่ใช้บรรยายและ validate โครงสร้างของ JSON document ตัว schema เองก็เป็น JSON object ที่อ้างอิงมาตรฐานเฉพาะผ่าน keyword $schema ซึ่งระบุว่าใช้ draft ไหน เช่น:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name"]
}
keyword ที่ใช้บ่อยที่สุดมีดังนี้:
- type — กำหนดชนิดข้อมูล เช่น object, array, string, number, integer, boolean, null
- properties — บรรยาย field ของ object โดยแต่ละ field ก็เป็น sub-schema ของตัวเอง
- required — array ของชื่อ property ที่ต้องมีใน object
- items / additionalItems — schema สำหรับ element ใน array
- additionalProperties — ควบคุมว่า property ที่ไม่ได้ระบุใน properties จะอนุญาตหรือไม่
- minimum, maximum, minLength, maxLength, pattern — constraints ต่าง ๆ
- format — รูปแบบที่กำหนดไว้ล่วงหน้า เช่น email, uri, date-time
เรื่องของ drafts สำคัญมาก JSON Schema พัฒนามาหลายเวอร์ชัน โดย Draft-07 เป็นเวอร์ชันที่แพร่หลายและเสถียรที่สุดในวงการ ส่วน drafts ที่ใหม่กว่า (เช่น 2019-09 และ 2020-12) มีโครงสร้างที่ซับซ้อนขึ้นและแยก vocabulary ออกเป็นชุดย่อย เครื่องมือของเราใช้ AJV ซึ่งรองรับ Draft-07 เป็นหลักและสามารถเปิดใช้ drafts ใหม่ ๆ ผ่าน plugin ได้ ในทางปฏิบัติ Draft-07 ตอบโจทย์กรณีใช้งานส่วนใหญ่
สำหรับ strict: false — AJV โดย default จะเปิด "strict mode" ที่ throw error ถ้าเจอ keyword ที่ไม่รู้จัก หรือ schema ที่มีลักษณะที่ "น่าสงสัย" เช่น property ที่ใช้ไม่ได้ผล การตั้งค่า strict: false ทำให้ validator อภัยให้กับ schema ที่อาจมี keyword เสริม (เช่น custom metadata) โดยไม่ reject ตั้งแต่ตอน compile ซึ่งเป็นประโยชน์เมื่อคุณใช้ schema ที่มาจากแหล่งต่าง ๆ หรือมี annotation เพิ่มเติม
ตัวอย่าง error report เมื่อ validation ไม่ผ่านจะมีลักษณะแบบนี้:
✖ Validation failed (2 errors) 1. data.age must be >= 0 Path: /age Keyword: minimum 2. data must have required property 'name' Path: Keyword: required
ผู้ใช้สามารถอ่าน path แล้วไปแก้ data ได้ตรงจุด ไม่ต้องเดา
กรณีการใช้งานจริง
ตรวจสอบ API Contract
เมื่อทีม frontend และ backend ตกลงกันว่า API ควร return โครงสร้างอะไร คุณสามารถนิยาม schema ของ response แล้วใช้ validator เพื่อยืนยันว่า output จริงตรงตาม contract ตัวอย่างเช่น API ที่ return ข้อมูลผู้ใช้:
// Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": { "type": "integer" },
"username": { "type": "string", "minLength": 3 },
"email": { "type": "string", "format": "email" }
},
"required": ["id", "username", "email"]
}
วาง response จริงจาก API ลงในช่อง data แล้วดูว่ามัน match กับ schema หรือไม่ ช่วยจับ regression ที่อาจเกิดจากการ refactor ฝั่ง backend
ตรวจสอบ Config หรือ Form Data
หลายแอปพลิเคชันใช้ JSON เป็น config file (เช่น package.json, CI/CD config) หรือรับ form data ผ่าน API คุณสามารถสร้าง schema ที่บังคับว่า config ต้องมี field อะไรบ้าง มีค่าอยู่ในช่วงที่เหมาะสมหรือไม่ ตัวอย่างเช่น schema สำหรับ webhook config:
{
"type": "object",
"properties": {
"url": { "type": "string", "format": "uri" },
"events": {
"type": "array",
"items": { "type": "string" },
"minItems": 1
},
"secret": { "type": "string", "minLength": 16 }
},
"required": ["url", "events"]
}
ถ้ามีคนลืมใส่ url หรือ secret สั้นเกินไป validator จะตรวจจับได้ก่อนที่ config จะถูก deploy
ตรวจสอบความถูกต้องของ API Responses
ในการทำ automated testing คุณอาจต้องการยืนยันว่าทุก response จาก endpoint หนึ่งตรงตาม schema เสมอ เครื่องมือนี้ช่วยให้คุณ "snapshot" schema ของ response ที่ถูกต้องแล้วใช้เป็น baseline เพื่อตรวจสอบ response ในอนาคต ลดโอกาสที่ breaking change จะผ่านไปถึง production
ดักจับ Bad Data ใน Data Pipelines
ในงาน data engineering ข้อมูลมักไหลผ่านหลาย stage (ETL) และมาจากหลายแหล่ง การ validate data ตั้งแต่ขั้นต้นช่วยป้องกัน "garbage in, garbage out" คุณสามารถวาง schema ที่เข้มงวด (เช่น บังคับ type, range, และ required fields) แล้วใช้ validator ตรวจ sample data ก่อนนำไปประมวลผลต่อ ช่วยลดเวลา debug ในภายหลังได้มาก
แนวทางปฏิบัติที่ดี
- เริ่มจาก built-in examples — ถ้าเพิ่งเริ่มเรียนรู้ JSON Schema ให้เลือก example เช่น User Profile แล้วปรับแก้ทีละส่วน เพื่อสังเกตว่าแต่ละ keyword มีผลอย่างไร
- ระบุ $schema เสมอ — การระบุ draft ที่จะใช้ (เช่น http://json-schema.org/draft-07/schema#) ทำให้ validator รู้ว่าต้องตีความ schema อย่างไร และช่วยให้เครื่องมืออื่น ๆ ทำงานร่วมกันได้
- ใช้ required อย่างรอบคอบ — อย่า mark field ทุกตัวว่า required โดยไม่จำเป็น ให้แยกระหว่าง field ที่ต้องมีจริง ๆ กับ field ที่เป็น optional
- เพิ่ม constraints ที่มีความหมาย — ใช้ minimum, maxLength, pattern, และ format เพื่อจำกัดค่าให้สมเหตุสมผล ไม่ใช่แค่ type เท่านั้น
- อ่าน error report ทีละบรรทัด — path ใน error บอกตำแหน่งของปัญหาใน data และ keyword บอกเงื่อนไขที่ fail นำข้อมูลสองส่วนนี้ไปแก้จุดที่ผิดได้โดยตรง
- เก็บ schema ไว้ใน version control — เมื่อ schema กลายเป็น contract ของระบบ ควรเก็บใน Git ควบคู่กับโค้ด เพื่อให้การเปลี่ยนแปลง schema มีการ review และสามารถ trace ประวัติได้
เริ่มตรวจสอบ JSON ของคุณวันนี้
ไม่ว่าคุณจะเป็นนักพัฒนาที่ต้องการยืนยัน API contract, วิศวกรข้อมูลที่ต้องดักจับ bad data, หรือเพียงแค่อยากเรียนรู้ว่า JSON Schema ทำงานอย่างไร JSON Schema Validator พร้อมช่วยคุณตรวจสอบข้อมูลได้ทันที — ไม่ต้องติดตั้ง, ไม่ต้องสมัคร, และทำงาน 100% ในเบราว์เซอร์ของคุณ เปิดใช้งานวันนี้แล้วทำให้ข้อมูลของคุณถูกต้องตั้งแต่ต้นทาง
เครื่องมือที่เกี่ยวข้องที่คุณอาจชอบ
- JSON Schema Generator — สร้าง JSON Schema อัตโนมัติจาก JSON document ที่มีอยู่ ช่วยลดเวลาเขียน schema ด้วยมือ
- JSON Formatter — จัดรูปแบบและย่อหน้า JSON ให้อ่านง่าย พร้อมเช็ค syntax error ก่อนนำไป validate
- JSON to TypeScript — แปลง JSON หรือ JSON Schema เป็น TypeScript interface เพื่อใช้ในโค้ดฝั่ง frontend
ขอให้สนุกกับการตรวจสอบ JSON!