เครื่องมือนี้ทำอะไร
JSON Schema คือชุดคำศัพท์สำหรับอธิบายโครงสร้างของข้อมูล JSON: อ็อบเจ็กต์ต้องมีพร็อพเพอร์ตีใดบ้าง ค่าแต่ละตัวเป็นชนิดใด ช่วงและรูปแบบที่อนุญาต ความยาวอาร์เรย์ และอื่น ๆ อีกมาก API ใช้ในสเปก OpenAPI โปรแกรมแก้ไขใช้เพื่อเติมคำอัตโนมัติในไฟล์ตั้งค่า และฝั่งเซิร์ฟเวอร์ใช้เพื่อปฏิเสธคำขอที่ไม่ถูกต้อง
เครื่องมือนี้ตรวจเอกสาร JSON กับ schema และแสดงทุกปัญหาที่พบ ข้อผิดพลาดแต่ละรายการบอกตำแหน่งในข้อมูล (JSON Pointer เช่น /tags/1) ข้อความที่อ่านเข้าใจง่าย และคีย์เวิร์ดของ schema ที่ไม่ผ่าน ช่วยให้แก้ข้อมูลหรือ schema ได้รวดเร็ว รองรับ draft 2020-12, 2019-09, draft-07 และ draft-04 รวมถึง $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties และการตรวจรูปแบบ
วิธีใช้
- วางข้อมูลลงใน ข้อมูล JSON และวาง schema ลงใน JSON Schema หรืออัปโหลดไฟล์ทั้งสองฝั่ง ตัวอย่าง จะโหลดข้อมูลผู้ใช้ที่จงใจใส่ข้อผิดพลาดไว้บางจุด
- ผลลัพธ์อัปเดตขณะพิมพ์: ป้ายสีเขียวเมื่อข้อมูลถูกต้อง หากไม่ถูกต้องจะแสดงจำนวนและรายการข้อผิดพลาด
- ปล่อย เวอร์ชัน เป็นอัตโนมัติเพื่อทำตาม
$schemaหรือเลือกเวอร์ชันเอง ปิด แสดงข้อผิดพลาดทั้งหมด เพื่อหยุดที่ข้อผิดพลาดแรก - คัดลอกข้อผิดพลาด จะคัดลอกรายการเป็นข้อความธรรมดา สำหรับรายงานบั๊กหรือการรีวิวโค้ด
หากฝั่งใดไม่ใช่ JSON ที่ถูกต้อง ข้อความจะบอกว่าปัญหาอยู่ที่ข้อมูลหรือ schema พร้อมบรรทัดและคอลัมน์
ตัวอย่าง
ด้วย schema นี้:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
เอกสาร {"age": -1} จะได้ข้อผิดพลาดสองรายการ: ที่ (ราก) ขาดพร็อพเพอร์ตีบังคับ id และที่ /age ค่าน้อยกว่าค่าต่ำสุด 0
เคล็ดลับ
เพิ่ม "additionalProperties": false เพื่อจับชื่อพร็อพเพอร์ตีที่สะกดผิด ซึ่งไม่เช่นนั้นจะผ่านไปเงียบ ๆ ใช้ enum หรือ const สำหรับค่าคงที่ และ pattern สำหรับสตริงอย่างรหัสสินค้า เมื่อ schema ใหญ่ขึ้น ให้ย้ายส่วนที่ซ้ำไปไว้ใน $defs แล้วอ้างอิงด้วย $ref
คำถามที่พบบ่อย
› รองรับ JSON Schema เวอร์ชันใดบ้าง?
Draft 2020-12, 2019-09, draft-07 (ครอบคลุม draft-06 ด้วย) และ draft-04 เมื่อตั้ง เวอร์ชัน เป็นอัตโนมัติ จะอ่านเวอร์ชันจากคีย์เวิร์ด $schema ส่วน schema ที่ไม่มี $schema จะถือเป็น 2020-12
› พาธในข้อผิดพลาดหมายถึงอะไร?
พาธแรกคือ JSON Pointer ที่ชี้ไปยังค่าในข้อมูลที่ไม่ผ่าน เช่น /items/2/price ส่วน (ราก) หมายถึงทั้งเอกสาร บรรทัดสีเทาแสดงคีย์เวิร์ดที่ไม่ผ่านและตำแหน่งใน schema เช่น minimum · #/properties/age/minimum
› ตรวจรูปแบบอย่าง email และ date-time ด้วยไหม?
ตรวจ รูปแบบที่ใช้บ่อยจะถูกตรวจสอบ ได้แก่ date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer และอื่น ๆ รูปแบบที่ไม่รู้จักจะถูกข้ามตามที่ข้อกำหนดอนุญาต
› schema อ้างอิงไฟล์อื่นได้ไหม?
การอ้างอิงภายใน schema เดียวกันใช้ได้ เช่น $ref ไปยัง #/$defs/address แต่จะไม่ดาวน์โหลด URL ภายนอก เพราะไม่มีข้อมูลใดออกจากเบราว์เซอร์ ให้วางนิยามที่อ้างถึงไว้ใน $defs แทน