Generator JSON Schema
Tempelkan satu atau beberapa sampel JSON, dan generator akan menyimpulkan JSON Schema yang dapat Anda gunakan untuk memvalidasi payload baru. Alat ini mendeteksi tipe, menandai bidang sebagai wajib ketika muncul di setiap sampel, menyimpulkan enum ketika nilai diambil dari himpunan tertutup yang kecil, serta menghasilkan keluaran yang sesuai dengan JSON Schema draft 2020-12.
Cara membuat JSON Schema
-
1
Tempelkan dokumen sampel
Satu atau beberapa payload nyata; semakin beragam, semakin akurat skema yang disimpulkan.
-
2
Pilih draft-nya
draft 2020-12 (berlaku saat ini), draft 07 (didukung luas), atau draft 04 (untuk OpenAPI versi lama).
-
3
Sesuaikan inferensi
Aktifkan/nonaktifkan inferensi enum, strategi bidang wajib (irisan atau gabungan), serta apakah semua bidang ditandai `required` ketika hanya satu sampel yang diberikan.
-
4
Hasilkan
Skema dihasilkan dengan `$schema`, `title`, `type`, `properties`, serta `$ref` bertingkat untuk sub-objek yang berulang.
Yang dapat dilakukan inferensi dengan baik
- Tipe: string, number, integer, boolean, null, array, object.
- Kemampuan bernilai null: bidang yang bernilai
nullpada satu sampel dan berupa string pada sampel lain akan menjadi["string", "null"]. - Elemen array: array homogen menghasilkan satu skema
items; array heterogen menghasilkanprefixItems. - Enum: jika semua nilai yang teramati berasal dari himpunan kecil (dapat dikonfigurasi, default 10 nilai berbeda), sistem menghasilkan
enum. - Wajib: dengan beberapa sampel, irisan kunci menjadi
required; dengan satu sampel, semua kunci wajib kecuali Anda memilih untuk tidak menyertakannya. - Format: string yang cocok dengan tanggal ISO-8601, email, atau URI memperoleh
formatyang disimpulkan.
Yang tidak dapat diketahui inferensi
- Maksud vs contoh: sampel
age: 25menyimpulkantype: integer, tetapi tidak dapat mengetahui bahwa Anda juga menerimanull. Berikan beberapa sampel yang mencakup kasus tepi. - Batasan:
minLength,maximum,pattern, Anda harus menambahkannya secara manual. Inferensi tidak menebak batas dari sampel. - Logika bisnis: “tepat satu dari tiga bidang ini harus diisi” memerlukan
oneOf, tidak dapat disimpulkan. - Referensi: generator menghasilkan skema datar. Jika Anda ingin memisahkan bentuk yang berulang ke dalam
$defs, lakukan itu setelah proses pembuatan.
Contoh keluaran
Dari satu sampel:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
Skema yang disimpulkan (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"]
}
Kesalahan umum
- Menyimpulkan dari satu sampel saja. Skema akan overfitting, setiap bidang menjadi wajib, tanpa toleransi terhadap null. Selalu masukkan minimal 5–10 sampel yang beragam.
- Menggunakan
integerpadahal maksud Andanumber. Jika ada sampel yang mengandung desimal, tipe yang disimpulkan menjadinumber; jika semuanya bilangan bulat, menjadiinteger. Untuk bidang yang bisa keduanya, sertakan sampel dengan angka desimal. - Melupakan bidang opsional. Bidang yang muncul di 4 dari 5 sampel tetapi tidak ada di 1 sampel menjadi opsional, sesuai maksud. Jika kelima sampel kebetulan menyertakannya, skema akan menandainya wajib meskipun sebenarnya opsional di API Anda.
Pertanyaan yang Sering Diajukan
Semakin banyak semakin baik, tetapi biasanya 5–10 sampel yang beragam sudah menghasilkan skema yang memadai. Dengan satu sampel, setiap bidang menjadi wajib dan kemampuan bernilai null tidak dapat disimpulkan, jadi selalu berikan beberapa varian jika memungkinkan.
draft 2020-12 secara default. draft 07 dan 04 tersedia untuk kompatibilitas dengan OpenAPI 3.0 (yang menggunakan subset dari draft 05/07).
Tidak. Menyimpulkan batasan dari sampel akan menyebabkan overfitting pada skema. Tambahkan minLength, maximum, pattern, dan sebagainya secara manual setelah pembuatan berdasarkan aturan bisnis Anda.
Ya. Jika Anda menempelkan array JSON, generator memperlakukan setiap elemen sebagai sampel terpisah dan menghasilkan skema yang mendeskripsikan satu elemen, bukan array terluarnya. Aktifkan opsi “perlakukan sebagai kontainer array” jika Anda justru menginginkan bentuk array terluar.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Referensi pintasan papan ketik
Cari pintasan bawaan terdokumentasi untuk VS Code, Chrome, dan Bash dengan GNU Readline di macOS, Windows, dan Linux.
Pemformat HTML
Format HTML secara lokal di browser dengan inden dua atau empat spasi. HTML tidak diunggah atau divalidasi.
Generator EditorConfig
Buat file .editorconfig dengan gaya dan ukuran indentasi, akhir baris, charset, dan aturan spasi Anda untuk format yang konsisten di berbagai IDE dan editor.
Validator Email
Validasi alamat email: pemeriksaan sintaks RFC 5322, pengecekan live record MX, serta detail bagian lokal, domain, dan panjang. Tidak ada email yang dikirim.
Alat ini tersedia dalam bahasa lain
- Trình tạo JSON Schema [VI]
- Generador de Esquema JSON [ES]
- Générateur de schéma JSON [FR]
- JSON 스키마 생성기 [KO]
- JSON-schemagenerator [NL]
- JSON-schemagenerator [SV]
- JSONスキーマジェネレーター [JA]
- เครื่องมือสร้าง JSON Schema [TH]
- مولّد مخطط JSON [AR]
- JSON-Schema-Generator [DE]
- Generator schematów JSON [PL]
- Gerador de Esquema JSON [PT]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]
- JSON Schema Generator [EN]