Penentu Struktur JSON
Masukkan skema dan dokumen, pilih drafnya, lalu alat validasi akan memeriksa dokumen terhadap setiap kata kunci yang digunakan dalam skema Anda, type, required, enum, oneOf, $ref, if/then/else, serta format khusus, dan melaporkan setiap pelanggaran dengan penunjuk bergaya JSONPath ke lokasi tepat yang bermasalah.
Cara memvalidasi berdasarkan skema
-
1
Tempel skema
Rancangan JSON Schema versi 04, 07, atau 2020-12. Kata kunci `$schema` (jika tersedia) akan secara otomatis memilih rancangan yang sesuai.
-
2
Lampirkan dokumen
JSON yang ingin Anda validasi harus merupakan JSON yang valid terlebih dahulu; kesalahan sintaksis akan ditampilkan sebelum evaluasi skema dilakukan.
-
3
Verifikasi
Setiap pelanggaran dilaporkan menggunakan pointer JSON (`/user/email`) serta kata kunci yang menyebabkan kegagalan (`format`, `required`, dll.).
-
4
Perbaiki dan validasi kembali
Ubah salah satu sisi dan pembaruan status akan langsung terlihat.
Kata kunci yang didukung
Inti: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.
Komposisi: allOf, anyOf, oneOf, not.
Alat aplikasi: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.
Kondisional: if, then, else, dependentSchemas.
Referensi: $ref, $defs, $id, $anchor.
Format (dengan validasi jika diaktifkan): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.
Hasil kesalahan
FAIL /user/email format "not-an-email" is not a valid "email"
FAIL /user/age minimum -3 is less than the minimum 0
FAIL /orders/0/total type "42" is not of type "number"
FAIL / required missing required property "shippingAddress"
Setiap kesalahan mencantumkan jalur dan kata kunci yang gagal, sehingga mudah ditemukan di editor Anda.
Perbedaan draf yang signifikan
| Kata Kunci | Draf 04 | Draf 07 | Draf 2020-12 |
|---|---|---|---|
id vs $id |
id |
$id |
$id |
exclusiveMaximum sebagai nilai bool |
Ya | Angka | Angka |
Sintaks array items |
items |
items |
prefixItems |
$ref mengizinkan saudara kandung |
Tidak | Tidak | Ya |
Atur rancangan yang tepat; memvalidasi skema draft-04 dengan tanggal 2020-12 akan menyebabkan kesalahan interpretasi terhadap id serta sejumlah detail lainnya.
Alur kerja tipikal
- Pengujian kontrak API: sebelum penerapan, jalankan skema OpenAPI yang telah dihasilkan atau diperbarui terhadap respons contoh nyata.
- Penguatan konfigurasi: validasi setiap konfigurasi YAML/JSON dalam proses CI terhadap skema yang ditentukan sebelum dilakukan penggabungan.
- Penerimaan data: segera menolak payload yang tidak sesuai dengan bentuk yang diharapkan, dengan pesan kesalahan yang jelas.
Kesalahan Umum
- Melupakan penerapan
format. Secara default, sebagian besar alat validasi menganggap format yang tidak dikenal hanya sebagai anotasi saja. Aktifkan validasi format ketat untuk benar-benar menolak email dan tanggal yang tidak valid. - Penggunaan berlebihan terhadap
oneOf: Jika dua cabang darioneOftumpang tindih, dokumen akan gagal (hanya boleh sesuai dengan satu cabang secara tepat). GunakananyOfatau pola diskriminator. - Skema yang ketat dengan
additionalProperties: false: Penambahan medan opsional baru akan menyebabkan perubahan signifikan (breaking change). Hindari penambahan tersebut kecuali Anda benar-benar memerlukan objek tertutup.
Pertanyaan yang Sering Diajukan
Ya. Rancangan 2020-12, 07, dan 04 semuanya didukung. Alat validasi membaca kata kunci $schema dari dokumen Anda untuk memilih yang tepat, atau beralih ke fitur pemilih dalam antarmuka pengguna (UI).
Format standar (email, date-time, uuid, ipv4, dll.) akan diverifikasi ketika opsi strict-format diaktifkan. Format khusus yang dideklarasikan dalam skema Anda hanya dianggap sebagai anotasi, kecuali jika Anda menyertakan ekspresi regex dengan format pattern.
Referensi internal (#/$defs/foo) diresolusi secara otomatis. Referensi HTTP eksternal tidak diambil secara otomatis sebagai langkah keamanan. Sebelumnya, masukkan referensi eksternal tersebut ke dalam kode langsung, atau gunakan alat khusus yang mendukung penyelesaian $ref dari jarak jauh.
Ya. Baik skema maupun dokumen tetap berada di lingkungan lokal. Konten yang dilekatkan tidak pernah diunggah, hal ini sangat aman untuk kontrak API internal dan data sensitif.
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 xác thực JSON Schema [VI]
- Validador de JSON Schema [ES]
- Validateur de schéma JSON [FR]
- JSON 스키마 검증기 [KO]
- JSON Schema-validator [NL]
- JSON Schema-validator [SV]
- JSONスキーマバリデーター [JA]
- เครื่องมือตรวจสอบ JSON Schema [TH]
- أداة التحقق من مخطط JSON [AR]
- JSON-Schema-Validator [DE]
- Walidator JSON Schema [PL]
- Validador de JSON Schema [PT]
- Validator di JSON Schema [IT]
- Валидатор JSON Schema [RU]
- JSON Şeması Doğrulayıcı [TR]
- JSON 模式验证器 [ZH]
- JSON Schema Validator [EN]