เพียงวางนิยาม JSON Schema ที่คุณคาดหวังไว้ด้านซ้าย และวางข้อมูลการตอบกลับจริงของ API ไว้ด้านขวา เครื่องมือจะเปรียบเทียบโครงสร้างทั้งสองโดยอัตโนมัติ ตรวจสอบประเภทข้อมูล ช่องที่ต้องกรอก รูปแบบ regex และอื่นๆ อย่างแม่นยำ นี่เป็นขั้นตอนสำคัญสำหรับการทดสอบสัญญา API และรับรองความสอดคล้องของโครงสร้างข้อมูล frontend-backend
เครื่องมือปฏิบัติตามมาตรฐาน JSON Schema Draft-07 อย่างสมบูรณ์ รองรับการตรวจสอบประเภทพื้นฐาน (type) ช่องที่ต้องกรอก (required) นิยามคุณสมบัติ (properties) การจับคู่รูปแบบ regex (pattern) การตรวจสอบรูปแบบ (format) ค่า enum (enum) และการตรวจสอบตรรกะการรวมที่ทรงพลัง (allOf, anyOf, oneOf, not)
เมื่อข้อมูล JSON ไม่ตรงกับ schema เครื่องมือจะสร้างรายงานข้อผิดพลาดที่ละเอียดอย่างยิ่ง ชี้แจงเส้นทาง JSON ที่มีข้อผิดพลาด ประเภทข้อผิดพลาดเฉพาะ (เช่น ประเภทไม่ตรงกันหรือขาดช่องที่ต้องกรอก) และกฎ schema ที่เกี่ยวข้อง — เพิ่มประสิทธิภาพการแก้ไขจุดบกพร่องสำหรับการพัฒนา backend และการทำความสะอาดข้อมูลอย่างมาก
ก่อนการทำความสะอาดข้อมูล ETL หรือการนำเข้าข้อมูล คุณสามารถใช้เครื่องมือนี้ตรวจสอบว่าข้อมูลสอดคล้องกับข้อกำหนด schema ที่กำหนดไว้ล่วงหน้าหรือไม่ สิ่งนี้ดักจับข้อมูลสกปรกและความผิดปกติได้อย่างมีประสิทธิภาพ รับรองคุณภาพข้อมูลที่เข้าสู่ฐานข้อมูลหรือระบบ downstream — ขั้นตอนสำคัญในการสร้าง pipeline ข้อมูลที่แข็งแกร่ง
ไม่ การประมวลผล JSON Schema Validator ทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณในเครื่องเท่านั้น ไม่ว่าจะเป็นโครงสร้างข้อมูล API ขององค์กรหรือข้อมูลธุรกิจส่วนตัว ไม่มีอะไรถูกอัปโหลดไปยังเซิร์ฟเวอร์ใดๆ รับรองการปกป้องความเป็นส่วนตัวของข้อมูลในระดับองค์กร
ตารางด้านล่างแสดงรายการคำสำคัญการตรวจสอบที่ใช้บ่อยที่สุดในข้อกำหนด JSON Schema จัดกลุ่มตามหมวดหมู่เพื่อการอ้างอิงที่รวดเร็ว
| คำสำคัญ | คำอธิบาย |
|---|---|
| ประเภทพื้นฐาน | |
type | ระบุประเภทข้อมูล: string, number, integer, boolean, array, object, null รองรับประเภทเดี่ยวหรืออาร์เรย์ของประเภท |
| การตรวจสอบออบเจกต์ | |
properties | กำหนดซับสคีมาสำหรับคุณสมบัติของออบเจกต์ |
required | อาร์เรย์สตริงที่ระบุว่าคุณสมบัติใดเป็นที่ต้องการ |
additionalProperties | ควบคุมว่าอนุญาตให้มีคุณสมบัติพิเศษที่ไม่ได้กำหนดใน properties หรือไม่ สามารถเป็น false หรือสคีมาได้ |
propertyNames | สคีมาที่ชื่อคุณสมบัติต้องตรงกับ (โดยทั่วไปใช้ pattern regex) |
minProperties | จำนวนคุณสมบัติขั้นต่ำที่ออบเจกต์ต้องมี |
maxProperties | จำนวนคุณสมบัติสูงสุดที่ออบเจกต์สามารถมีได้ |
| เอนัมและค่าคงที่ | |
enum | อาร์เรย์ของค่าที่อนุญาต ข้อมูลต้องเป็นค่าหนึ่งในอาร์เรย์อย่างแน่นอน |
const | ค่าคงที่ ข้อมูลต้องเท่ากับค่านี้อย่างเข้มงวด |
| ข้อจำกัดตัวเลข | |
minimum | ค่าตัวเลขขั้นต่ำ (รวมค่านี้ด้วย) |
maximum | ค่าตัวเลขสูงสุด (รวมค่านี้ด้วย) |
exclusiveMinimum | ค่าต้องมากกว่าอย่างเข้มงวด (ไม่รวมค่านี้) |
exclusiveMaximum | ค่าต้องน้อยกว่าอย่างเข้มงวด (ไม่รวมค่านี้) |
multipleOf | ค่าต้องเป็นผลคูณของจำนวนที่ระบุ |
| ข้อจำกัดสตริง | |
minLength | ความยาวขั้นต่ำของสตริง |
maxLength | ความยาวสูงสุดของสตริง |
pattern | นิพจน์ปรกติ สตริงต้องตรงกับรูปแบบนี้ |
format | การตรวจสอบรูปแบบความหมาย: email, uri, date-time, uuid, ipv4, ipv6, hostname ฯลฯ |
| ข้อจำกัดอาร์เรย์ | |
items | สคีมาสำหรับองค์ประกอบอาร์เรย์ (สคีมาเดียวใช้กับทุกองค์ประกอบ) |
minItems | จำนวนองค์ประกอบอาร์เรย์ขั้นต่ำ |
maxItems | จำนวนองค์ประกอบอาร์เรย์สูงสุด |
uniqueItems | ว่าองค์ประกอบอาร์เรย์ต้องไม่ซ้ำกันหรือไม่ |
contains | อย่างน้อยหนึ่งองค์ประกอบอาร์เรย์ต้องตรงกับสคีมานี้ |
| ตรรกะเชิงรวม | |
allOf | ข้อมูลต้องตรงกับทุกซับสคีมา (AND เชิงตรรกะ) |
anyOf | ข้อมูลต้องตรงกับอย่างน้อยหนึ่งซับสคีมา (OR เชิงตรรกะ) |
oneOf | ข้อมูลต้องตรงกับซับสคีมาเพียงหนึ่งเดียว (XOR) |
not | ข้อมูลต้องไม่ตรงกับสคีมานี้ (NOT เชิงตรรกะ) |
| การตรวจสอบเชื่อมไข | |
if | สคีมาเงื่อนไข หากข้อมูลตรงกับ if ต้องสอดคล้องกับ then มิฉะนั้นต้องสอดคล้องกับ else |
then | สคีมาที่ต้องสอดคล้องเมื่อเงื่อนไข if เป็นจริง |
else | สคีมาที่ต้องสอดคล้องเมื่อเงื่อนไข if ไม่เป็นจริง |
| การอ้างอิงและการนำกลับมาใช้ | |
$ref | อ้างอิงคำจำกัดความสคีมาอื่น รองรับการอ้างอิงในเครื่อง (#/$defs/xxx) และการอ้างอิงระยะไกล |
$defs | กำหนดซับสคีมาที่นำกลับมาใช้ใหม่ได้ (Draft 2019-09+ เวอร์ชันเก่าใช้ definitions) |
definitions | คำสำคัญสำหรับซับสคีมาที่นำกลับมาใช้ใหม่ได้ใน Draft 4-7 |
| ข้อมูลเมตา | |
title | ชื่อสคีมา (คำอธิบายประกอบ ไม่ได้รับการตรวจสอบ) |
description | คำอธิบายสคีมา (คำอธิบายประกอบ ไม่ได้รับการตรวจสอบ) |
default | ค่าเริ่มต้น (คำอธิบายประกอบ ไม่ได้รับการตรวจสอบ) |
examples | อาร์เรย์ของค่าตัวอย่าง (คำอธิบายประกอบ ไม่ได้รับการตรวจสอบ) |
$schema | ระบุเวอร์ชันข้อกำหนด JSON Schema ที่กำลังใช้งาน |
| การอาศัยกัน | |
dependentRequired | การอาศัยกันของคุณสมบัติ: เมื่อมีคุณสมบัติหนึ่งอยู่ คุณสมบัติอื่นๆ ต้องมีอยู่ด้วย (Draft 2019-09+) |
dependencies | คำสำคัญการอาศัยกันใน Draft 4-7 ครอบคลุมทั้งการอาศัยกันของคุณสมบัติและสคีมา |
JSON Schema ได้พัฒนาผ่านหลายเวอร์ชัน Draft ปัจจุบัน Draft 7 เป็นเวอร์ชันที่ใช้กันอย่างแพร่หลายที่สุด Draft 2020-12 เป็นเวอร์ชันเสถียรล่าสุด
| คุณสมบัติ | Draft 4 | Draft 6 | Draft 7 | 2019-09 | 2020-12 |
|---|---|---|---|---|---|
| การตรวจสอบ type | ✓ | ✓ | ✓ | ✓ | ✓ |
| ฟิลด์ที่ต้องกรอก | ✓ | ✓ | ✓ | ✓ | ✓ |
| enum/const | ✓ enum | ✓ | ✓ | ✓ | ✓ |
| minimum/maximum | ✓ | ✓ | ✓ | ✓ | ✓ |
| exclusiveMinimum/Maximum | บูลีน | ตัวเลข | ตัวเลข | ตัวเลข | ตัวเลข |
| multipleOf | ✓ | ✓ | ✓ | ✓ | ✓ |
| minLength/maxLength | ✓ | ✓ | ✓ | ✓ | ✓ |
| pattern regex | ✓ | ✓ | ✓ | ✓ | ✓ |
| การตรวจสอบ format | ✓ | ✓ | ✓ | คำอธิบายประกอบโดยค่าเริ่มต้น | คำอธิบายประกอบโดยค่าเริ่มต้น |
| อาร์เรย์ items | ✓ | ✓ | ✓ | ✓ | ✓ |
| contains | ✗ | ✓ | ✓ | ✓ | ✓ |
| minItems/maxItems | ✓ | ✓ | ✓ | ✓ | ✓ |
| uniqueItems | ✓ | ✓ | ✓ | ✓ | ✓ |
| additionalProperties | ✓ | ✓ | ✓ | ✓ | ✓ |
| propertyNames | ✗ | ✓ | ✓ | ✓ | ✓ |
| allOf/anyOf/oneOf/not | ✓ | ✓ | ✓ | ✓ | ✓ |
| if/then/else | ✗ | ✗ | ✓ | ✓ | ✓ |
| การอ้างอิง $ref | ✓ | ✓ | ✓ | ✓ | ✓ |
| การนำ $defs กลับมาใช้ | definitions | definitions | definitions | $defs | $defs |
| dependentRequired | ✗ | ✗ | ✗ | ✓ | ✓ |
| ทูเพิล prefixItems | รูปแบบอาร์เรย์ | รูปแบบอาร์เรย์ | รูปแบบอาร์เรย์ | รูปแบบอาร์เรย์ | prefixItems |
| unevaluatedProperties | ✗ | ✗ | ✗ | ✓ | ✓ |
| $dynamicRef/$anchor | ✗ | ✗ | ✗ | ✓ $recursiveRef | ✓ dynamicRef |