Guide 27 Mar 2026 12 min bacaan

Pengesahan JSON Schema: Panduan Lengkap untuk Mentakrifkan dan Mengesahkan Data JSON

Ketahui bagaimana JSON Schema berfungsi sebagai kontrak untuk data anda -- daripada jenis asas dan medan wajib hingga pengesahan format, versi draf dan kes penggunaan dunia sebenar untuk API dan fail konfigurasi.

JSON Schema Validation Guide

Apa itu JSON Schema?

JSON Schema ialah bahasa deklaratif yang membolehkan anda menggambarkan struktur, kandungan dan kekangan dokumen JSON. Fikirkan ia sebagai kontrak antara pengeluar dan pengguna data. Pengeluar berkata "saya akan sentiasa menghantar objek dengan string name dan integer age", dan pengguna boleh mengesahkan bahawa setiap payload masuk benar-benar mematuhi janji tersebut sebelum memprosesnya.

Ini penting kerana JSON sendiri tidak mempunyai skema. Mana-mana nilai JSON yang sah adalah sah sepenuhnya. Kebebasan ini hebat untuk prototaip pantas, tetapi menjadi masalah apabila dua sistem perlu bersetuju tentang rupa data.

Mengapa JSON Schema Penting untuk API

API REST berkomunikasi melalui payload JSON, dan setiap endpoint mempunyai bentuk tersirat. JSON Schema menjadikan bentuk itu eksplisit dan boleh dibaca mesin. Dengan skema, anda boleh:

  • Mengesahkan permintaan di pelayan sebelum ia mencapai logik perniagaan anda.
  • Mengesahkan respons dalam ujian integrasi untuk menangkap perubahan yang merosakkan.
  • Menjana dokumentasi secara automatik -- alat seperti Swagger/OpenAPI menggunakan JSON Schema sebagai tulang belakang.
  • Menjana kod -- alat skema-ke-TypeScript, skema-ke-Go-struct menghapuskan definisi jenis manual.
Pandangan utama: JSON Schema bukan sekadar alat pengesahan. Ia adalah sumber kebenaran tunggal yang memacu dokumentasi, penjanaan kod, ujian dan semakan masa jalan -- semuanya daripada satu fail.

Asas JSON Schema

Setiap JSON Schema sendiri adalah objek JSON. Skema paling mudah ialah objek kosong {}, yang menerima mana-mana JSON yang sah.

Jenis Primitif

Kata kunci type adalah asas. JSON Schema mengenal pasti enam jenis primitif:

Jenis Contoh JSON Nota
string"hello"Nilai teks. Boleh dikekang dengan minLength, maxLength, pattern.
number3.14Mana-mana nilai berangka. Guna minimum, maximum, multipleOf.
integer42Nombor bulat sahaja. Kekangan sama seperti number.
booleantrueHanya true atau false.
object{"kunci": "nilai"}Pasangan kunci-nilai. Ditakrifkan dengan properties, required, additionalProperties.
array[1, 2, 3]Senarai teratur. Guna items, minItems, maxItems, uniqueItems.
nullnullKetiadaan nilai. Sering digabung dengan jenis lain.

Sifat dan Medan Wajib

Kata kunci properties mentakrifkan kunci yang dijangka. Kata kunci required menyenaraikan yang mana mesti ada.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "email": { "type": "string", "format": "email" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name", "email"]
}

Mengawal Sifat Tambahan

"additionalProperties": false menjadikan skema ketat -- hanya kunci yang disenaraikan dibenarkan.

Awas: Jika anda menggunakan additionalProperties: false bersama kata kunci komposisi seperti allOf, sifat yang ditakrifkan dalam sub-skema lain mungkin ditolak.

Pengesahan Format

Kata kunci format menyediakan pengesahan semantik melebihi jenis asas.

Format Terbina Dalam

Format Contoh Nilai Kes Penggunaan
date-time2026-03-27T10:30:00ZCap masa ISO 8601 untuk peristiwa dan log
date2026-03-27Tarikh kalendar tanpa masa
email[email protected]Borang hubungan, pendaftaran pengguna
urihttps://example.com/apiURL webhook, pautan sumber
uuid550e8400-e29b-41d4-a716-446655440000Pengecam unik, kunci utama
ipv4192.168.1.1Konfigurasi rangkaian, alamat pelayan

Format sebagai Anotasi vs. Penegasan

Secara lalai, format adalah anotasi, bukan penegasan. Dalam Draft 2020-12, anda perlu mengaktifkan penegasan format secara eksplisit.

Petua praktikal: Sentiasa gabungkan format dengan regex pattern jika pengesahan ketat adalah kritikal.

Versi Draf: Draft-07 vs 2020-12

Dua versi yang paling kerap anda temui ialah Draft-07 dan Draft 2020-12.

Perbezaan Utama

Ciri Draft-07 Draft 2020-12
prefixItemsTidak tersediaMenggantikan pengesahan tuple
$dynamicRefTidak tersediaBaharu -- rujukan skema dinamik
unevaluatedPropertiesTidak tersediaMenyelesaikan masalah additionalProperties + allOf
Sokongan perpustakaanCemerlangBaik dan berkembang

Versi Mana yang Perlu Dipilih?

Pilih Draft-07 jika ekosistem anda sudah menggunakannya atau anda memerlukan keserasian maksimum.

Pilih Draft 2020-12 jika anda memulakan projek baharu tanpa kekangan warisan.

Kesimpulan

Untuk kebanyakan projek baharu pada tahun 2026, Draft 2020-12 adalah pilihan lalai yang lebih baik.

Cara Menggunakan Penjana JSON Schema Kami

Penjana JSON Schema percuma kami mengambil mana-mana payload JSON dan menghasilkan skema yang sah secara automatik. Semuanya berjalan dalam pelayar anda.

Panduan Langkah demi Langkah

  1. Buka alat Penjana JSON Schema.
  2. Tampal JSON anda ke dalam kawasan input.
  3. Klik Jana dan alat akan menganalisis setiap medan, membuat inferens jenis dan mengesan format.
  4. Semak output -- skema yang dijana muncul di panel output.
  5. Tukar ke tab Sahkan untuk menguji skema anda terhadap payload JSON baharu.
  6. Salin skema dengan satu klik dan integrasikan ke dalam projek anda.
Nota Privasi

Penjana JSON Schema kami berjalan 100% dalam pelayar anda. Data JSON, skema yang dijana dan keputusan pengesahan anda tidak pernah meninggalkan peranti anda.

Jana JSON Schema Anda dengan Segera

Tampal mana-mana payload JSON dan dapatkan skema sedia guna dengan inferens jenis, medan wajib dan pengesanan format -- 100% dalam pelayar anda.