← Kembali ke Blog

Memahami JSON Schema: Panduan Lengkap Validasi

Kuasai JSON Schema untuk validasi data. Pelajari sintaksis skema, teknik validasi, dan implementasi di berbagai bahasa pemrograman.

Big JSON Team14 menit bacalanjutan
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

14 min read

Apa Itu JSON Schema?

JSON Schema adalah kosakata untuk memvalidasi dan mendeskripsikan dokumen JSON. Ia mendefinisikan struktur, batasan, dan aturan validasi untuk data JSON Anda.

Contoh Skema Dasar

{

"$schema": "https://json-schema.org/draft/2020-12/schema",

"type": "object",

"properties": {

"name": { "type": "string" },

"age": { "type": "integer", "minimum": 0 },

"email": { "type": "string", "format": "email" }

},

"required": ["name", "email"]

}

Kata Kunci Skema (Schema Keywords)

  • type: Tipe data (string, number, object, array, boolean, null)
  • required: Properti yang wajib ada
  • properties: Definisi properti objek
  • minimum/maximum: Batasan angka
  • minLength/maxLength: Batasan panjang string
  • pattern: Pola regex untuk string
  • format: Format yang telah ditentukan (email, uri, date, dll.)

Validasi di JavaScript

import Ajv from 'ajv';

const ajv = new Ajv();

const schema = {

type: 'object',

properties: {

name: { type: 'string' },

age: { type: 'number', minimum: 0 }

},

required: ['name']

};

const validate = ajv.compile(schema);

const valid = validate({ name: 'Alice', age: 30 });

if (!valid) {

console.log(validate.errors);

}

Validasi di Python

from jsonschema import validate, ValidationError

schema = {

"type": "object",

"properties": {

"name": {"type": "string"},

"age": {"type": "integer", "minimum": 0}

},

"required": ["name"]

}

data = {"name": "Alice", "age": 30}

try:

validate(instance=data, schema=schema)

print("Valid!")

except ValidationError as e:

print(f"Error: {e.message}")

Fitur Lanjutan

  • $ref: Referensi skema dan penggunaan kembali
  • allOf/anyOf/oneOf: Komposisi skema
  • if/then/else: Skema kondisional
  • additionalProperties: Mengontrol properti tambahan

Contoh Skema Bersarang

{

"type": "object",

"properties": {

"user": {

"type": "object",

"properties": {

"name": { "type": "string" },

"address": {

"type": "object",

"properties": {

"street": { "type": "string" },

"city": { "type": "string" }

}

}

}

}

}

}

Validasi Array

{

"type": "array",

"items": {

"type": "object",

"properties": {

"id": { "type": "integer" },

"name": { "type": "string" }

}

},

"minItems": 1,

"maxItems": 100

}

Praktik Terbaik

  • Mulai dari yang sederhana, tambahkan kompleksitas sesuai kebutuhan
  • Gunakan $defs untuk bagian skema yang dapat digunakan kembali
  • Berikan pesan kesalahan yang jelas
  • Berikan versi pada skema Anda
  • Uji skema secara menyeluruh
  • Penggunaan Kembali Skema (Schema Reusability)

    {
    

    "$defs": {

    "address": {

    "type": "object",

    "properties": {

    "street": { "type": "string" },

    "city": { "type": "string" }

    }

    }

    },

    "type": "object",

    "properties": {

    "billingAddress": { "$ref": "#/$defs/address" },

    "shippingAddress": { "$ref": "#/$defs/address" }

    }

    }

    Kesimpulan

    JSON Schema sangat penting untuk membangun API yang tangguh. Ia menyediakan validasi, dokumentasi, dan keamanan tipe untuk data JSON Anda!

    Share:

    Artikel Terkait

    Read in English