Utilia

JSON Schema Validator

Validasi dokumen JSON terhadap JSON Schema di browser Anda. Setiap kesalahan ditampilkan lengkap dengan path instance, keyword, dan path schema-nya.

Cara memvalidasi JSON terhadap schema

  1. Tempel schema Anda di JSON Schema dan data Anda di Dokumen JSON, atau pilih kasus siap pakai dari Contoh.
  2. Biarkan Draft pada Otomatis ($schema) untuk memakai versi yang disebutkan oleh $schema di schema, atau paksa draft 4, 7, 2019-09, atau 2020-12.
  3. Validasi berjalan saat Anda mengetik; Validasi menjalankannya lagi. Format keduanya merapikan ulang indentasi kedua teks.
  4. Baca hasilnya: baris hijau jika dokumen valid, atau tabel kesalahan jika tidak.

Membaca tabel kesalahan

Setiap baris adalah satu aturan yang gagal:

  • Path instance adalah JSON Pointer ke nilai yang gagal. /roles/1 adalah item kedua dari roles; (root) adalah seluruh dokumen.
  • Keyword adalah aturan schema yang gagal: type, required, minimum, pattern, format, additionalProperties, dan seterusnya.
  • Pesan menjelaskan kegagalannya, misalnya 0 is less than 1. Pesan ini berasal dari pustaka validator dan ditulis dalam bahasa Inggris.
  • Path schema menunjuk ke keyword di dalam schema, seperti /properties/id/minimum, sehingga Anda bisa menemukan aturannya dengan cepat.

Validasi tidak berhenti pada masalah pertama: semua kesalahan ditampilkan. Jika properti objek gagal, validator melaporkan ringkasan (“Property “id” does not match schema”) diikuti alasan yang tepat. Tampilkan hanya kesalahan yang paling spesifik menyembunyikan ringkasan tersebut; hapus centangnya untuk melihat rantai lengkapnya. Kesalahan di bawah anyOf dan oneOf selalu ditampilkan bersama kesalahan spesifik setiap cabangnya, karena hanya bermakna jika dilihat bersama.

Apa saja yang didukung

  • Draft: 4, 6 (divalidasi dengan aturan draft 7), 7, 2019-09, dan 2020-12, termasuk $defs/definitions, $ref lokal, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties, dan unevaluatedItems.
  • Format: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer, dan relative-json-pointer diperiksa. Format yang tidak dikenal diabaikan, sebagaimana diizinkan spesifikasi.
  • Referensi: $ref bisa menunjuk ke mana saja di dalam schema, termasuk ke $id yang dideklarasikannya. Schema jarak jauh tidak pernah diunduh; referensi ke URL lain dilaporkan sebagai tidak terselesaikan.

Alat ini memvalidasi dokumen terhadap schema Anda. Alat ini tidak memeriksa apakah schema itu sendiri mengikuti meta-schema, tetapi memperingatkan tentang nama type yang tidak dikenal seperti "strin" atau "int", salah ketik umum yang biasanya diabaikan diam-diam oleh validator.

Contoh-contohnya

  • Profil pengguna (2020-12): required, panjang string, format: email, enum di dalam items, uniqueItems, dan additionalProperties: false.
  • Daftar produk dengan $ref (draft-07): array yang item-nya mereferensikan #/definitions/product, dengan pattern untuk SKU dan harga exclusiveMinimum.
  • Konfigurasi dengan if/then (2019-09): sertifikat yang hanya wajib dalam mode HTTPS, oneOf antara email dan URI, serta batas numerik.

Setiap contoh disertai dokumen yang sengaja berisi kesalahan, sehingga Anda bisa melihat seperti apa tampilan kesalahannya.

Pertanyaan yang sering diajukan

Apakah data saya diunggah?

Tidak. Schema dan dokumen divalidasi di browser Anda; tidak ada yang dikirim ke server.

Mengapa $ref di schema saya “unresolved”?

Validator hanya mengenal schema yang Anda tempel. $ref ke file atau URL lain tidak bisa diikuti; salin definisi yang dirujuk ke $defs dan arahkan ke #/$defs/… sebagai gantinya.

Draft mana yang sebaiknya dipakai?

Gunakan draft yang ditargetkan proyek Anda, dan deklarasikan dengan $schema. Untuk schema baru, 2020-12 adalah versi terkini; OpenAPI 3.1 juga memakainya.

Mengapa integer menolak 2.0?

Tidak menolak: JSON Schema menganggap 2.0 sebagai integer karena nilainya bulat. 2.5-lah yang gagal pada "type": "integer".

Apakah pesan kesalahan tersedia dalam bahasa Indonesia?

Label alat ini dalam bahasa Indonesia, tetapi pesan kesalahan dari validator ditulis dalam bahasa Inggris. Path instance, keyword, dan path schema tetap sama dalam bahasa apa pun.

Apakah alat ini berfungsi offline?

Ya. Setelah halaman dimuat dan Anda menjalankan validasi pertama (yang memuat validator), tidak diperlukan koneksi.