วิธีใช้งาน
- วางตัวอย่าง JSON หรือคลิกปุ่มโหลดตัวอย่าง
- กำหนดชื่อสำหรับสคีมาหลัก
- คัดลอกหรือดาวน์โหลดสคีมา แล้วเพิ่มข้อกำหนด เช่น รูปแบบ แพตเทิร์น และช่วงค่า
คำอธิบายตัวเลือก
- ชื่อ type หลัก
- ใช้เป็นชื่อเรื่องของสคีมา
ตัวอย่าง
{"id": 1, "email": null} กลายเป็นสคีมาที่มี "id": {"type": "integer"}, "email": {"type": "null"} และทั้งสองคีย์อยู่ใน required
ตัวอย่างเพิ่มเติม
ระเบียนผู้ใช้สองรายการ ซึ่งมีเพียงรายการแรกที่มีอีเมล และ manager บางครั้งเป็น null:
[
{ "id": 1, "name": "Ada", "email": "ada@example.com", "tags": ["admin"], "manager": null },
{ "id": 2, "name": "Grace", "tags": [], "manager": { "id": 1 } }
]
เมื่อตั้งชื่อ type หลักเป็น User สคีมาที่สร้างขึ้นคือ:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "User",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"email": { "type": "string" },
"tags": { "type": "array", "items": { "type": "string" } },
"manager": {
"anyOf": [
{ "type": "null" },
{ "type": "object", "properties": { "id": { "type": "integer" } }, "required": ["id"] }
]
}
},
"required": ["id", "name", "tags", "manager"]
}
}
email ไม่อยู่ใน required เพราะระเบียนที่สองไม่มี และ manager รับได้ทั้ง null หรืออ็อบเจ็กต์ เพราะทั้งสองแบบปรากฏในตัวอย่าง ยิ่งข้อมูลตัวอย่างหลากหลาย สคีมายิ่งแม่นยำ ควรวางหลายระเบียนแทนที่จะวางระเบียนเดียว
การใช้งานทั่วไป
ตรวจสอบอินพุตของ API โหลดสคีมาลงในตัวตรวจสอบ เช่น Ajv (JavaScript) หรือ jsonschema (Python) และปฏิเสธคำขอที่ไม่ตรง
จัดทำเอกสาร API วางพร็อพเพอร์ตีลงในส่วน components.schemas ของ OpenAPI เป็นจุดเริ่มต้น
เติมโค้ดอัตโนมัติในตัวแก้ไข VS Code และ JetBrains IDE ใช้ JSON Schema เพื่อแนะนำคีย์และชี้ข้อผิดพลาดในไฟล์ตั้งค่า JSON
คำถามที่พบบ่อย
คีย์ใดจะถูกระบุว่าเป็นคีย์ที่จำเป็น
คีย์ที่มีอยู่ในอ็อบเจ็กต์ตัวอย่างทุกอ็อบเจ็กต์ หากอาร์เรย์มีอ็อบเจ็กต์ที่ใช้คีย์ต่างกัน คีย์ที่ขาดหายไปในบางรายการจะไม่ถูกระบุไว้ใน required
สามารถใช้กับ OpenAPI ได้หรือไม่
OpenAPI 3.1 ใช้ JSON Schema 2020-12 ดังนั้นสคีมาที่สร้างขึ้นจึงใช้ภายใต้ components/schemas ได้ สำหรับ OpenAPI 3.0 ให้แทนที่อาร์เรย์ของ type เช่น ["string", "null"] ด้วย nullable true
ตรวจจับ format เช่น email หรือ date-time ได้หรือไม่
ไม่ ระบบจะอนุมานเฉพาะชนิดข้อมูลเท่านั้น หากจำเป็น ให้เพิ่มคีย์เวิร์ดอย่าง format, pattern, minimum และคีย์เวิร์ดที่คล้ายกันด้วยตนเอง
JSON ของฉันถูกอัปโหลดหรือไม่
ไม่ ชนิดข้อมูลจะถูกสร้างในเบราว์เซอร์ของคุณ ดังนั้นการตอบกลับจาก API ที่มีข้อมูลจริงจึงยังคงอยู่บนอุปกรณ์ของคุณ
ความเป็นส่วนตัว
เครื่องมือนี้ทำงานในเบราว์เซอร์ของคุณทั้งหมด ไฟล์และข้อความของคุณได้รับการประมวลผลบนอุปกรณ์ของคุณ และจะไม่ถูกอัปโหลดไปยังเซิร์ฟเวอร์ของเรา