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
Generator Konfigurasi Webpack
Buat webpack.config.js untuk webpack 5 dari formulir singkat: atur entry, folder output, dan mode, lalu aktifkan TypeScript, Babel, loader CSS, HtmlWebpackPlugin, dan dev server.
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.
Dari SQL ke NoSQL
Ubah satu pernyataan SQL SELECT menjadi kueri find() MongoDB. Memetakan kolom, WHERE (=, >, <, >=, <=, !=), AND/OR, ORDER BY, dan LIMIT. Tanpa JOIN, GROUP BY, atau agregasi.
Generator Robots.txt
Buat file robots.txt yang valid: tetapkan user-agent, cantumkan jalur Disallow dan Allow, tambahkan Crawl-delay, dan deklarasikan sitemap Anda, lalu salin hasilnya.
Validator XSD
Validasi dokumen XML terhadap skema XSD dan laporkan ketidakcocokan elemen dan tipe dengan nomor baris persis.
Konverter RGB ke CMYK
Konversi warna RGB menjadi persentase tinta CMYK dengan rumus standar. Pratinjau instan dan nilai C/M/Y/K. Ini pendekatan matematis, bukan konversi dengan manajemen warna.
Alat ini tersedia dalam bahasa lain
- เครื่องมือตรวจสอบ JSON Schema [TH]
- Trình xác thực JSON Schema [VI]
- JSON Schema-validator [SV]
- JSONスキーマバリデーター [JA]
- Validador de JSON Schema [ES]
- Walidator JSON Schema [PL]
- JSON Schema-validator [NL]
- أداة التحقق من مخطط JSON [AR]
- JSON-Schema-Validator [DE]
- Validador de JSON Schema [PT]
- JSON 스키마 검증기 [KO]
- Validateur de schéma JSON [FR]
- JSON Schema Validator [EN]
- Validator di JSON Schema [IT]
- Валидатор JSON Schema [RU]
- JSON Şeması Doğrulayıcı [TR]
- JSON 模式验证器 [ZH]