Semua artikel

JSON Schema: cara mendeskripsikan dan memvalidasi struktur JSON

JSON Schema adalah cara untuk mendeskripsikan seperti apa struktur dokumen JSON seharusnya, menggunakan dokumen JSON lain. Alih-alih memvalidasi data secara manual dengan kondisional dalam kode, Anda bisa mendeskripsikan secara deklaratif tipe yang diharapkan, field wajib, dan batasan nilai, lalu memeriksa data secara otomatis.

Kata kunci utama draft-07

  • type — tipe nilai yang diharapkan (object, string, number, array, dll.).
  • required — daftar field objek yang wajib ada.
  • properties — deskripsi skema untuk setiap field objek secara individual.
  • enum — membatasi nilai pada sekumpulan opsi tertentu.
  • pattern — memvalidasi string dengan ekspresi reguler, misalnya untuk format NIK.

Contoh: pattern untuk NIK Indonesia

NIK (Nomor Induk Kependudukan) Indonesia selalu terdiri dari 16 digit. Skema untuk field pendaftaran pengguna pada API layanan publik atau fintech bisa menuliskannya seperti ini: "nik": {"type": "string", "pattern": "^\\d{16}$"}. Pattern ini tidak memeriksa apakah kode wilayah di enam digit pertama benar-benar valid atau apakah tanggal lahir yang disandikan di dalamnya masuk akal — itu perlu validasi bisnis tambahan — tetapi langsung menolak kesalahan umum seperti NIK yang kurang atau lebih dari 16 digit, atau yang mengandung spasi karena disalin dari dokumen scan KTP.

Bedanya dengan validasi sintaks

Validasi JSON biasa hanya memeriksa apakah teksnya benar secara sintaks — tanda kurung, tanda kutip, koma pada tempatnya. JSON Schema memeriksa jauh lebih banyak: apakah sebuah objek memiliki field wajib email, apakah nilai age adalah angka dan bukan string, apakah status termasuk dalam daftar nilai yang diizinkan.

Untuk apa ini dibutuhkan

  • Memverifikasi bahwa respons API pihak ketiga sesuai dengan kontrak yang didokumentasikan.
  • Memvalidasi berkas konfigurasi sebelum deployment untuk menangkap kesalahan lebih awal.
  • Mendokumentasikan struktur data yang diharapkan dalam format yang bisa langsung diperiksa secara otomatis.

additionalProperties: apakah boleh menambahkan field ekstra

Secara default, JSON Schema mengizinkan field apa pun dalam objek di luar yang dideskripsikan di propertiesrequired dan properties hanya menetapkan minimum, bukan daftar lengkap yang membatasi. Jika field yang tidak dikenal perlu dilarang, "additionalProperties": false harus ditambahkan secara eksplisit — tanpa flag ini, skema tetap "terbuka".

Coba alat