Cara membuat JSON Schema
- Tempel contoh JSON yang representatif. Array dengan beberapa item memberikan hasil terbaik, karena item-itemnya digabung menjadi satu schema.
- Pilih versi schema (draft 2020-12 atau draft-07), lalu tentukan apakah properti ditandai wajib, format dideteksi, dan properti tambahan dilarang.
- Salin atau unduh schema, lalu sempurnakan secara manual – misalnya tambahkan deskripsi, enum, atau nilai minimum dan maksimum.
Apa saja yang dideteksi generator
| Contoh JSON | Schema |
|---|---|
"ada@example.com" | {"type": "string", "format": "email"} |
"2026-05-01T10:00:00Z" | format date-time (juga date, time, uri, uuid, ipv4) |
42 / 4.5 | "integer" / "number" |
| key yang ada di setiap objek | dicantumkan di required |
| key yang tidak ada di sebagian item array | opsional (tidak ada di required) |
[1, "a", null] | "items": {"type": ["string", "integer", "null"]} |
| objek yang bercampur dengan nilai biasa | anyOf dengan satu schema untuk setiap jenis |
Apa itu JSON Schema?
JSON Schema adalah kosakata untuk mendeskripsikan dan memvalidasi struktur data JSON: properti apa saja yang ada, tipe masing-masing properti, mana yang wajib, dan nilai apa yang diizinkan. JSON Schema dipakai untuk kontrak API di OpenAPI, file konfigurasi, pembuatan form, dan validasi output terstruktur dari model AI. Versi terbarunya adalah 2020-12; draft-07 masih didukung oleh banyak tool lama. Spesifikasinya dipublikasikan di json-schema.org.
Menyempurnakan schema yang dihasilkan
- Tambahkan
titledandescriptionuntuk mendokumentasikan arti setiap field. - Batasi nilai dengan
enum,minimum,maximum,maxLength, ataupattern. - Centang Larang properti tambahan (
additionalProperties: false) untuk menolak key yang tidak dikenal. - Validasi data dengan Ajv di JavaScript atau paket
jsonschemadi Python.
Pertanyaan yang sering diajukan
Versi JSON Schema mana yang sebaiknya dipakai?
Gunakan draft 2020-12 untuk proyek baru – ini versi terbaru dan menjadi dasar OpenAPI 3.1. Pilih draft-07 jika validator atau tool Anda belum mendukung 2020-12.
Mengapa semua properti saya ditandai required?
Dengan satu contoh objek, setiap properti selalu ada, sehingga semuanya ditandai wajib. Gunakan array berisi beberapa contoh yang bervariasi, atau matikan Tandai properti sebagai wajib (required).
Bisakah generator mendeteksi enum atau rentang nilai?
Tidak. Satu contoh tidak bisa menunjukkan nilai apa saja yang diizinkan secara umum, sehingga enum, nilai minimum dan maksimum, serta pattern harus ditambahkan secara manual.
Bagaimana cara memvalidasi JSON dengan schema?
Gunakan library validator seperti Ajv untuk JavaScript atau jsonschema untuk Python. Banyak code editor juga memvalidasi file JSON terhadap schema yang dirujuk di properti $schema-nya.