Sintaks
Aturan
{ }Objek (pasangan key-value tidak berurutan)
[ ]Array (daftar nilai berurutan)
"key": valueKey harus berupa string dengan tanda kutip ganda
No trailing commaItem terakhir tidak boleh memiliki koma
No commentsJSON tidak mengizinkan komentar
Contoh Minimal
{ "name": "Alice", "age": 30, "active": true }
Tipe Data
Enam Tipe Nilai
"string"Teks UTF-8 dengan tanda kutip ganda
42 / 3.14Number (integer atau bilangan pecahan)
true / falseBoolean
nullNull (tidak ada nilai)
{ }Objek
[ ]Array
Urutan Escape String
\"Tanda kutip ganda
\\Backslash
\n \tNewline, tab
\uXXXXUnicode escape (hex)
Objek
Sintaks Objek
{ "id": 1, "name": "Widget", "tags": ["new", "sale"] }
Aturan
KeysHarus berupa string dengan tanda kutip ganda yang unik
ValuesTipe JSON valid mana pun
OrderUrutan key tidak dijamin
NestingObjek bisa mengandung objek lain
Array
Sintaks Array
[1, "two", true, null, {"key": "val"}]
Array Tipe Campuran
{ "matrix": [[1, 2], [3, 4]], "empty": [] }
Aturan
OrderedElemen mempertahankan urutan penyisipan
Mixed typesItem array bisa berbeda tipe
IndexingBerbasis nol (di sebagian besar bahasa)
Nesting
Struktur Bersarang
{ "user": { "name": "Alice", "address": { "city": "Boston" }, "scores": [95, 88, 72] } }
Pola Akses
obj.user.nameNotasi titik (JavaScript)
obj["user"]["name"]Notasi kurung
obj.user.scores[0]Indeks array dalam objek bersarang
Validasi Schema
Contoh JSON Schema
{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "integer", "minimum": 0 } }, "required": ["name"] }
Kata Kunci Schema
typestring, number, integer, boolean, object, array, null
requiredArray nama properti yang wajib ada
propertiesMendefinisikan properti objek yang diharapkan
enumBatasi ke kumpulan nilai tetap
minLength / maxLengthBatasan panjang string
minimum / maximumBatasan rentang angka
Dasar jq
Filter Umum
.Identity — lewatkan input
.keyAkses key objek
.key.nestedAkses key bersarang
.[0]Elemen array pertama
.[]Iterasi semua elemen array
select(.age > 20)Filter berdasarkan kondisi
map(.name)Transformasi setiap elemen
lengthPanjang array atau string
keysKey objek sebagai array
Contoh jq
echo '{"a":1}' | jq '.a' # 1 echo '[1,2,3]' | jq 'map(. * 2)' # [2,4,6] cat data.json | jq '.users[].name' cat data.json | jq '.[] | select(.active)'
Pola Umum
Respons API
{ "status": 200, "data": [{"id": 1, "name": "Alice"}], "meta": {"total": 42, "page": 1} }
File Konfigurasi
{ "host": "localhost", "port": 8080, "debug": false, "features": ["auth", "logging"] }
Tips
ValidateGunakan jsonlint atau python -m json.tool
Pretty printjq . file.json atau python -m json.tool
JSONLSatu objek JSON per baris (newline-delimited)
JSON5 / JSONCEkstensi yang mengizinkan komentar dan trailing comma