เครื่องมือสร้าง JSON Schema
วางตัวอย่าง JSON หนึ่งชุดหรือหลายชุด แล้วเครื่องมือจะอนุมาน JSON Schema ที่คุณนำไปใช้ตรวจสอบความถูกต้องของ payload ใหม่ได้ โดยจะตรวจจับชนิดข้อมูล ทำเครื่องหมายฟิลด์ว่าจำเป็นเมื่อปรากฏในทุกตัวอย่าง อนุมาน enum เมื่อค่ามาจากชุดปิดขนาดเล็ก และสร้างผลลัพธ์ที่สอดคล้องกับ JSON Schema draft 2020-12
วิธีสร้าง JSON Schema
-
1
วางเอกสารตัวอย่าง
payload จริงหนึ่งชุดหรือหลายชุด ยิ่งมีความหลากหลายมากเท่าใด สคีมาที่อนุมานได้ก็ยิ่งแม่นยำมากขึ้นเท่านั้น
-
2
เลือกดราฟต์
draft 2020-12 (ปัจจุบัน), draft 07 (รองรับอย่างกว้างขวาง) หรือ draft 04 (สำหรับ OpenAPI รุ่นเก่า)
-
3
ปรับแต่งการอนุมาน
สลับการอนุมาน enum, กลยุทธ์ฟิลด์ที่จำเป็น (อินเตอร์เซกชันหรือยูเนียน) และการกำหนดว่าจะทำเครื่องหมายทุกฟิลด์เป็น `required` หรือไม่ เมื่อมีตัวอย่างเพียงชุดเดียว
-
4
สร้าง
สคีมาจะถูกสร้างพร้อมกับ `$schema`, `title`, `type`, `properties` และ `$ref` ที่ซ้อนกันสำหรับอ็อบเจกต์ย่อยที่ปรากฏซ้ำ
สิ่งที่การอนุมานทำได้ดี
- ชนิดข้อมูล: string, number, integer, boolean, null, array, object
- ความเป็น null ได้: ฟิลด์ที่เป็น
nullในตัวอย่างหนึ่งและเป็นสตริงในอีกตัวอย่างหนึ่ง จะกลายเป็น["string", "null"] - สมาชิกของอาร์เรย์: อาร์เรย์ที่มีชนิดเดียวกันจะสร้างสคีมา
itemsเพียงชุดเดียว ส่วนอาร์เรย์ที่มีหลายชนิดจะสร้างprefixItems - enum: หากค่าที่พบทั้งหมดมาจากชุดขนาดเล็ก (ปรับค่าได้ ค่าเริ่มต้นคือ 10 ค่าที่แตกต่างกัน) จะสร้าง
enumออกมา - จำเป็น: เมื่อมีหลายตัวอย่าง อินเตอร์เซกชันของคีย์จะกลายเป็น
required; เมื่อมีตัวอย่างเดียว คีย์ทั้งหมดจะจำเป็น เว้นแต่คุณจะเลือกไม่ใช้ - รูปแบบ: สตริงที่ตรงกับวันที่ตามมาตรฐาน ISO-8601 อีเมล หรือ URI จะได้รับ
formatที่อนุมานได้
สิ่งที่การอนุมานไม่อาจรู้ได้
- เจตนากับตัวอย่าง: ตัวอย่าง
age: 25อนุมานได้ว่าเป็นtype: integerแต่ไม่อาจรู้ได้ว่าคุณยอมรับnullด้วยหรือไม่ ควรส่งตัวอย่างหลายชุดที่ครอบคลุมกรณีขอบเขต - ข้อจำกัด:
minLength,maximum,pattern, คุณต้องเพิ่มด้วยตนเอง การอนุมานจะไม่เดาขอบเขตจากตัวอย่าง - ตรรกะทางธุรกิจ: เงื่อนไข “ต้องกำหนดค่าเพียงหนึ่งในสามฟิลด์นี้เท่านั้น” ต้องใช้
oneOf, ไม่สามารถอนุมานได้ - การอ้างอิง: เครื่องมือจะสร้างสคีมาแบบแบน หากต้องการแยกรูปแบบที่ซ้ำกันออกเป็น
$defsให้ทำหลังจากการสร้างเสร็จสิ้น
ตัวอย่างผลลัพธ์
จากตัวอย่างชุดเดียว:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
สคีมาที่อนุมานได้ (draft 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
ข้อผิดพลาดที่พบบ่อย
- อนุมานจากตัวอย่างชุดเดียว สคีมาจะโอเวอร์ฟิต, ทุกฟิลด์กลายเป็นจำเป็น และไม่ยอมรับ null เลย ควรป้อนตัวอย่างที่หลากหลายอย่างน้อย 5–10 ชุดเสมอ
- ใช้
integerทั้งที่ต้องการnumberหากตัวอย่างใดมีทศนิยม ชนิดที่อนุมานได้จะเป็นnumber; หากทั้งหมดเป็นจำนวนเต็ม จะเป็นintegerสำหรับฟิลด์ที่เป็นได้ทั้งสองแบบ ควรใส่ตัวอย่างที่มีทศนิยมด้วย - ลืมฟิลด์ที่เป็นตัวเลือก ฟิลด์ที่ปรากฏใน 4 จาก 5 ตัวอย่างแต่ขาดไปใน 1 ตัวอย่างจะกลายเป็นตัวเลือก, ซึ่งเป็นไปตามที่ตั้งใจ หากทั้ง 5 ตัวอย่างบังเอิญมีฟิลด์นั้น สคีมาจะทำเครื่องหมายว่าจำเป็น แม้ว่าในความเป็นจริงมันจะเป็นตัวเลือกใน API ของคุณก็ตาม
คำถามที่พบบ่อย
ยิ่งมากยิ่งดี แต่โดยทั่วไปตัวอย่างที่หลากหลาย 5–10 ชุดก็เพียงพอที่จะสร้างสคีมาที่สมเหตุสมผลได้ หากมีตัวอย่างเพียงชุดเดียว ทุกฟิลด์จะกลายเป็นจำเป็นและไม่สามารถอนุมานความเป็น null ได้ ดังนั้นควรให้ตัวอย่างหลายรูปแบบเสมอหากเป็นไปได้
ค่าเริ่มต้นคือ draft 2020-12 ส่วน draft 07 และ draft 04 มีให้ใช้เพื่อรองรับความเข้ากันได้กับ OpenAPI 3.0 (ซึ่งใช้ส่วนย่อยของ draft 05/07)
ไม่ การอนุมานข้อจำกัดจากตัวอย่างจะทำให้สคีมาโอเวอร์ฟิต ให้เพิ่ม minLength, maximum, pattern และอื่น ๆ ด้วยตนเองหลังจากการสร้าง โดยอิงตามกฎทางธุรกิจของคุณ
ได้ หากคุณวางอาร์เรย์ JSON เครื่องมือจะถือว่าแต่ละสมาชิกเป็นตัวอย่างแยกกัน และสร้างสคีมาที่อธิบายสมาชิกแต่ละตัว ไม่ใช่อาร์เรย์ชั้นนอก หากต้องการโครงสร้างของอาร์เรย์ชั้นนอกเอง ให้เปิดตัวเลือก “ถือเป็นคอนเทนเนอร์อาร์เรย์”
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
ตัวตรวจสอบอีเมล
ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
เครื่องมือสร้าง EditorConfig
สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Trình tạo JSON Schema [VI]
- JSON-Schema-Generator [DE]
- Gerador de Esquema JSON [PT]
- JSON 스키마 생성기 [KO]
- مولّد مخطط JSON [AR]
- JSON-schemagenerator [SV]
- JSON-schemagenerator [NL]
- Générateur de schéma JSON [FR]
- Generator schematów JSON [PL]
- Generator JSON Schema [ID]
- JSONスキーマジェネレーター [JA]
- Generador de Esquema JSON [ES]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]