Lompat ke konten
Aback Tools Logo

Cara Memvalidasi JSON Online: Sintaks, Skema, dan Kesalahan Umum

Cara memvalidasi JSON online: apa arti JSON valid menurut RFC 8259, validator lokal di browser, pemeriksaan JSON Schema, lima kesalahan paling umum beserta perbaikannya, dan validasi terprogram di JS, Python, dan CI.

DH
Tutorials & How-Tos13 menit baca2,800 kata

Validasi JSON adalah hal pertama yang sebaiknya Anda lakukan setiap kali JSON keluar dari satu sistem dan masuk ke sistem lain: sebelum menyentuh API Anda, sebelum disimpan ke basis data, sebelum diproses oleh sebuah skrip. JSON yang tidak valid tidak menghasilkan pesan kesalahan yang membantu; ia menghasilkan kegagalan penguraian yang sering disalahartikan ke komponen yang salah. Panduan ini mencakup setiap metode praktis untuk memvalidasi JSON secara online dan offline, menjelaskan apa yang sebenarnya dimaksud "JSON valid", dan menunjukkan cara mendiagnosis serta memperbaiki kesalahan yang paling umum.

< 1dWaktu validasi onlineTanpa perlu instalasi
0 KBData yang diunggahBerjalan sepenuhnya di browser
5Kesalahan JSON paling umumSemua tertangkap oleh validator

Apa sebenarnya arti "JSON valid"?

JSON (JavaScript Object Notation) memiliki spesifikasi formal yang didefinisikan oleh RFC 8259 dan standar ECMA-404. Dokumen JSON valid ketika sepenuhnya sesuai dengan spesifikasi tersebut — tidak lebih, tidak kurang. Aturannya lebih ketat daripada yang diperkirakan banyak orang, dan beberapa hal yang diizinkan JavaScript secara eksplisit dilarang dalam JSON.

Aturan spesifikasi JSON

  • String harus memakai tanda kutip ganda - string berkutip tunggal (`'value'`) bukan JSON valid meskipun JavaScript menerimanya.
  • Tanpa koma di akhir - `[1, 2, 3,]` dan `{"a": 1,}` tidak valid; koma setelah elemen terakhir harus dihapus.
  • Tanpa komentar - `// komentar baris` dan `/* komentar blok */` bukan bagian dari spesifikasi JSON.
  • Tanpa nilai undefined - `undefined` adalah konsep JavaScript; JSON hanya mengizinkan `null`, angka, string, boolean, array, dan objek.
  • Angka tidak boleh memiliki nol di awal - `012` bukan JSON valid; gunakan `12`.
  • Kunci objek harus berupa string - `{1: "value"}` tidak valid; kunci harus berupa string berkutip ganda.
  • Tanpa karakter kontrol di dalam string - baris baru mentah, tab, dan karakter kontrol lainnya harus di-escape (`\n`, `\t`, dll.).

Note

JSON5 dan JSONC (JSON dengan Komentar) adalah superset JSON yang lebih longgar dan populer, mengizinkan komentar, koma akhir, dan kutip tunggal. Jika alat Anda menghasilkan format-format ini, validator JSON standar akan menolaknya - gunakan parser JSON5 atau JSONC, atau singkirkan ekstensinya sebelum validasi.

Valid secara sintaks vs. valid secara semantik

Dokumen JSON bisa valid secara sintaks (terbentuk benar menurut spesifikasi) tetapi tidak valid secara semantik untuk aplikasi Anda. Misalnya, objek JSON dengan "age" bernilai -5 adalah JSON valid, tetapi usia yang tidak sah untuk profil pengguna. Validasi sintaks adalah yang diperiksa oleh parser JSON; validasi skema adalah yang menangkap kesalahan semantik. Kedua lapisan sama pentingnya, dan panduan ini membahas keduanya.

Cara memvalidasi JSON online dalam hitungan detik

Cara tercepat memeriksa apakah sebuah string JSON valid adalah menempelkannya ke validator JSON online. Tanpa instalasi, tanpa konfigurasi, tanpa akun. Hasilnya seketika, dan - ketika Anda memakai alat berbasis browser - data Anda tidak pernah meninggalkan perangkat Anda.

Teks JSON adalah nilai yang diserialisasi. Perlu dicatat bahwa beberapa spesifikasi JSON terdahulu membatasi teks JSON hanya pada objek atau array.

- Spesifikasi JSON, RFC 8259

Menggunakan Pemformat dan Validator JSON

Pemformat & Validator JSON di Aback Tools memvalidasi dan memformat JSON secara bersamaan. Tempelkan string JSON apa pun dan ia langsung memberi tahu apakah masukan valid. Jika tidak valid, alat ini menandai posisi kesalahan dengan nomor baris dan deskripsi bahasa sederhana tentang apa yang salah. Jika valid, ia menghasilkan JSON yang bersih dan terindentasi yang bisa langsung Anda salin ke proyek.

Pendekatan dua fungsi ini penting dalam praktik. Ketika Anda menerima JSON dari API, menyalinnya dari berkas konfigurasi, atau mengambilnya dari baris log, teks mentahnya sering diminimalkan dan sulit dibaca. Memformatnya sebagai bagian dari validasi memberi dua hal sekaligus: konfirmasi bahwa JSON tersebut valid, dan versi yang dapat dibaca untuk benar-benar Anda periksa.

Tip

Jika Anda hanya butuh jawaban ya/tidak - apakah ini JSON valid? - tempelkan payload Anda dan lihat indikator status di bagian atas panel keluaran. Lencanan hijau "JSON Valid" berarti parser menerima masukan tanpa kesalahan. Indikator merah berarti ada yang salah, dan detail kesalahannya akan memberi tahu Anda persis apa.

Pemformat & Validator JSON

Tempelkan string JSON apa pun untuk langsung memvalidasi, mencetak rapi, dan mewarnai sintaks di browser Anda - dengan diagnostik kesalahan tingkat baris dan tanpa unggahan.

Open tool

Kesalahan JSON umum dan cara memperbaikinya

Sebagian besar dokumen JSON yang tidak valid gagal karena salah satu dari lima alasan. Mengenal pola-pola ini memungkinkan Anda memperbaiki kesalahan dengan cepat tanpa sepenuhnya bergantung pada alat untuk mendiagnosisnya.

1

Koma di akhir

Koma di akhir adalah kesalahan JSON paling umum, sebagian besar karena JavaScript dan sebagian besar bahasa modern mengizinkannya pada literal objek dan array. JSON tidak. Hapus koma setelah properti terakhir di setiap objek dan setelah elemen terakhir di setiap array.

Koma akhir - tidak valid vs valid
json
// ❌ Tidak valid - koma setelah properti terakhir
{
  "name": "Alice",
  "age": 30,
}

// ✓ Valid - tanpa koma akhir
{
  "name": "Alice",
  "age": 30
}
2

String berkutip tunggal

Kutip tunggal valid di JavaScript tetapi eksplisit dilarang dalam JSON. Setiap string - baik kunci maupun nilai - harus memakai kutip ganda. Kesalahan ini umum ketika JSON ditulis tangan atau disalin dari literal objek JavaScript.

Kutip tunggal - tidak valid vs valid
json
// ❌ Tidak valid - kunci dan nilai berkutip tunggal
{'city': 'London'}

// ✓ Valid - kunci dan nilai berkutip ganda
{"city": "London"}
3

Komentar di dalam JSON

JSON tidak memiliki sintaks komentar. Jika JSON Anda memuat komentar `//` atau `/* */` - sering ditambahkan ke berkas konfigurasi sebagai dokumentasi - parser JSON standar akan menolak seluruh dokumen. Singkirkan semua komentar sebelum penguraian, atau beralihlah ke format seperti JSONC atau JSON5 yang mendukungnya secara native.

Komentar - JSON tidak valid
json
// ❌ Tidak valid - komentar bukan bagian dari spesifikasi JSON
{
  // Ini objek pengguna
  "name": "Alice",
  "role": "admin" /* izin tingkat tinggi */
}
4

Karakter khusus tanpa escape di string

Baris baru mentah, tab, garis miring terbalik, dan karakter kontrol Unicode tertentu harus di-escape di dalam string JSON. Baris baru mentah di dalam nilai string - berbeda dari urutan escape `\n` - membuat JSON tak dapat diurai. Kesalahan ini sering muncul ketika JSON dibuat dengan menggabungkan string dalam kode alih-alih memakai serialisator JSON yang tepat.

Karakter tanpa escape - tidak valid vs valid
json
// ❌ Tidak valid - baris baru mentah di dalam nilai
{"message": "line one
line two"}

// ✓ Valid - baris baru yang di-escape
{"message": "line one\nline two"}
5

Kurung atau kurung kurawal yang tidak berpasangan

Kurung kurawal yang belum ditutup, kurung siku yang belum ditutup, atau pembatas penutup yang tak berpasangan menyebabkan kegagalan penguraian. Ini umum pada JSON yang disunting manual dan JSON yang dibuat oleh kode yang menyusun payload lewat penggabungan string. Pemformat dengan pencocokan pembatas membuatnya langsung terlihat.

Pembatas tak berpasangan - tidak valid vs valid
json
// ❌ Tidak valid - array dibuka tetapi objek yang ditutup
{
  "items": [1, 2, 3
}

// ✓ Valid - pembatas berpasangan
{
  "items": [1, 2, 3]
}

Detektor Kunci Duplikat JSON

Mendeteksi kunci objek yang berulang pada payload JSON apa pun - penimpaan senyap akibat kunci duplikat dianggap valid oleh sebagian parser tetapi menyebabkan kehilangan data dan bug yang sulit didiagnosis.

Open tool

Validasi JSON Schema: memeriksa nilai, bukan hanya sintaks

Validasi sintaks memastikan JSON terbentuk dengan baik. Validasi skema memastikan JSON berisi data yang benar - field yang benar, tipe yang benar, rentang nilai yang benar. Dua pemeriksaan berbeda ini sama-sama diperlukan dalam sistem produksi.

Apa itu JSON Schema?

JSON Schema adalah kosakata untuk mendeskripsikan struktur dan batasan dokumen JSON. Dokumen skema menentukan field mana yang wajib, tipe apa yang harus dimiliki setiap field, nilai minimum dan maksimum untuk angka, pola string yang diizinkan, dan lainnya. Saat memvalidasi dokumen JSON terhadap skema, Anda mendapat kesalahan yang presisi seperti "field 'email' wajib ada" atau "field 'age' harus berupa bilangan bulat positif" - bukan sekadar "JSON tidak valid".

Menggunakan Validator JSON Schema

Validator JSON Schema di Aback Tools menerima payload JSON dan JSON Schema, lalu memvalidasi payload terhadap batasan skema. Ia melaporkan kesalahan pada tingkat aturan dengan path field persis yang gagal - Anda tahu bukan hanya bahwa validasi gagal, tetapi field mana yang melanggar aturan mana. Ini alat yang tepat ketika Anda perlu memastikan respons API sesuai kontrak, atau berkas konfigurasi memuat semua pengaturan yang wajib.

Note

Jika Anda punya payload JSON tetapi belum memiliki skema, [Generator JSON Schema](/tools/data/converters/json-schema-generator) otomatis menyimpulkan skema Draft-07 atau Draft 2020-12 dari payload Anda. Ia mendeteksi tipe, field wajib, format string (email, tanggal, URI), dan struktur objek bersarang. Gunakan skema hasil generasi sebagai titik awal lalu perhalus dengan batasan tambahan.

Validasi sintaks vs. validasi skema

AspekValidasi sintaksValidasi skema
Yang diperiksaKesesuaian dengan spesifikasi JSONTipe data, field, batasan
Alat yang diperlukanParser JSON apa punValidator JSON Schema
Keluaran kesalahanPosisi baris/karakterPath field + aturan yang dilanggar
MenangkapKutip hilang, koma salahTipe salah, field hilang
Kapan dipakaiSelalu - pemeriksaan pertamaSaat ada kontrak
Lulus = jaminanDapat diurai pustaka JSON mana punCocok dengan model data Anda

Membuat skema dari payload yang sudah ada

Cara tercepat menambahkan validasi skema ke proyek yang sudah berjalan adalah membuat skema dari payload yang terbukti baik. Tempelkan objek JSON representatif ke Generator JSON Schema dan ia menghasilkan skema lengkap dengan definisi tipe, field wajib, dan petunjuk format. Salin keluarannya ke proyek Anda dan gunakan sebagai kontrak validasi untuk semua payload berikutnya dengan tipe tersebut.

Memvalidasi JSON secara terprogram

Alat online adalah pilihan tercepat untuk pemeriksaan sekali pakai, tetapi sistem produksi membutuhkan validasi JSON yang tertanam dalam kode. Setiap bahasa pemrograman besar memiliki setidaknya satu pustaka penguraian JSON yang terpelihara baik, dan sebagian besar juga punya pustaka validasi skema khusus.

JavaScript dan TypeScript

Di JavaScript, `JSON.parse()` melempar `SyntaxError` ketika menerima JSON tidak valid - bungkus dengan try/catch agar kesalahan ditangani dengan rapi. Untuk validasi skema, AJV (Another JSON Validator) adalah pustaka paling banyak dipakai, mendukung JSON Schema Draft-07 hingga Draft 2020-12 dengan performa tinggi. Zod adalah alternatif populer yang berorientasi TypeScript, memvalidasi JSON terhadap skema tipe runtime dengan inferensi TypeScript penuh. Konverter JSON ke Skema Zod di Aback Tools menghasilkan skema Zod dari payload JSON apa pun secara otomatis.

Validasi sintaks di TypeScript
typescript
function isValidJson(input: string): boolean {
  try {
    JSON.parse(input);
    return true;
  } catch {
    return false;
  }
}

// Or get the parsed value and the error together:
function parseJson<T>(input: string): { data: T } | { error: string } {
  try {
    return { data: JSON.parse(input) as T };
  } catch (e) {
    return { error: (e as SyntaxError).message };
  }
}

Python

Modul `json` bawaan Python melempar `json.JSONDecodeError` (subclass dari `ValueError`) ketika penguraian gagal. Objek kesalahannya memuat nomor baris, kolom, dan deskripsi. Untuk validasi skema, jsonschema dan pydantic adalah pilihan standar - pydantic sangat populer di proyek FastAPI karena memvalidasi dan mendeserialisasi JSON menjadi objek Python bertipe dalam satu langkah.

Validasi sintaks di Python
python
import json

def is_valid_json(text: str) -> bool:
    try:
        json.loads(text)
        return True
    except json.JSONDecodeError as e:
        print(f"Invalid JSON at line {e.lineno}, col {e.colno}: {e.msg}")
        return False

Baris perintah

Di sistem apa pun dengan Python terpasang, `python3 -m json.tool input.json` memvalidasi dan mencetak rapi berkas JSON dalam satu perintah. Kode keluar bernilai bukan nol saat gagal, sehingga cocok untuk skrip shell dan pipeline CI. Alat `jq` adalah alternatif yang lebih andal: `jq . input.json` memvalidasi dan memformat, sedangkan `jq 'empty' input.json` memvalidasi tanpa menghasilkan keluaran.

Validasi JSON cepat dari baris perintah
bash
# Validate and pretty-print with Python (built-in, no install)
python3 -m json.tool input.json

# Validate silently with jq (exit code 0 = valid, 1 = invalid)
jq empty input.json && echo "Valid" || echo "Invalid"

# Validate multiple files with a loop
for f in *.json; do
  jq empty "$f" && echo "$f: valid" || echo "$f: INVALID"
done

Tip

Di pipeline CI, gunakan `jq empty` alih-alih `python3 -m json.tool` untuk validasi JSON. `jq` lebih cepat pada berkas besar, tidak menghasilkan keluaran saat sukses (log tetap bersih), dan mengembalikan kode keluar bermakna yang bisa ditindaklanjuti sistem CI tanpa logika tambahan.

Memvalidasi format JSON khusus

Validasi JSON standar mencakup berkas `.json` dan payload API. Namun JSON juga muncul dalam beberapa format lain yang punya persyaratan validasi tersendiri - format di mana parser JSON standar menghasilkan hasil yang salah atau menolak seluruh masukan.

JSONL dan NDJSON (JSON Lines)

Berkas JSON Lines (`.jsonl`) memuat satu objek JSON per baris tanpa array pembungkus. Format ini menjadi standar untuk berkas log, dataset pelatihan ML, dan API streaming. Parser JSON standar akan menolak berkas JSONL karena berkas secara keseluruhan bukan dokumen JSON yang valid - setiap baris harus diurai satu per satu. Validator & Perbaiki JSON Lines memvalidasi setiap baris secara terpisah, melaporkan nomor baris mana yang bermasalah, dan menawarkan perbaikan otomatis yang aman untuk masalah format umum.

JSON dengan kunci duplikat

Spesifikasi JSON secara teknis mengizinkan kunci duplikat pada objek, tetapi perilakunya tidak terdefinisi - parser berbeda menanganinya dengan cara berbeda. `json.loads()` Python mempertahankan nilai terakhir; sebagian parser mempertahankan yang pertama; yang lain melempar kesalahan. Dalam praktiknya, kunci duplikat hampir selalu merupakan bug - penggabungan yang keliru atau kesalahan templat. Detektor Kunci Duplikat JSON menemukan semua kunci berulang dan memberi tahu persis di mana mereka muncul.

JSON di dalam berkas konfigurasi YAML

YAML adalah superset JSON, sehingga semua JSON valid juga merupakan YAML valid. Namun JSON yang tertanam di berkas YAML - misalnya sebagai nilai field string - memerlukan validasi tersendiri. Jika Anda bekerja dengan config YAML yang memuat nilai JSON tertanam, validasi bagian JSON secara terpisah dengan pemformat JSON, lalu validasi YAML keseluruhan dengan validator YAML. Jika proyek Anda memakai kedua format dan Anda perlu membandingkan dua berkas konfigurasi, Penyorot Perbedaan JSON/YAML menangani keduanya sekaligus.

Warning

Jangan pernah memakai parser YAML sebagai pengganti validator JSON. YAML mengizinkan konstruksi yang bukan JSON valid - fakta bahwa YAML menerima masukan Anda tidak menegaskan JSON tersebut sesuai spesifikasi. Gunakan parser khusus JSON untuk validasi JSON, bahkan ketika JSON tertanam di berkas YAML.

Praktik terbaik validasi JSON

Memvalidasi JSON satu kali sebelum operasi penting itu bagus. Menanamkan validasi di setiap titik di mana JSON masuk atau keluar dari sistem Anda lebih baik. Praktik-praktik ini berlaku baik Anda membangun API, memproses pipeline data, maupun mengelola berkas konfigurasi.

Validasi saat ingest, bukan saat konsumsi

Waktu yang tepat untuk memvalidasi JSON adalah saat ia pertama kali masuk ke sistem Anda - di batas API, di handler unggah berkas, di konsumen antrean pesan. Memvalidasi saat konsumsi (di fungsi yang membaca nilai jauh di dalam kode) berarti data tidak valid menyebar lebih jauh sebelum gagal, membuat kesalahan lebih sulit dilacak. Validasilah lebih awal dan tolak masukan tidak valid di titik masuk.

Gunakan skema, bukan sekadar pemeriksaan sintaks

Validasi sintaks adalah standar minimum. Pada sistem mana pun yang memuat data kritis bisnis melalui JSON - catatan pengguna, payload pembayaran, nilai konfigurasi - skema menambah lapisan kedua yang menangkap tipe salah, field wajib yang hilang, dan nilai di luar rentang yang tidak dapat dideteksi validasi sintaks. Buat skema awal Anda dari payload yang terbukti baik menggunakan Generator JSON Schema dan perhalus seiring berkembangnya model data Anda.

Tangani kesalahan validasi secara eksplisit

Panggilan `JSON.parse()` yang dibungkus try/catch tetapi menelan kesalahan dan mengembalikan null lebih buruk daripada tidak memvalidasi sama sekali - ia menyembunyikan masalah. Ketika validasi JSON gagal, catat kesalahannya beserta sumber masukan, pesan kesalahan persis, dan konteks yang cukup untuk mereproduksi masalah. Kembalikan kesalahan yang bermakna ke pemanggil alih-alih hasil kosong yang memicu kesalahan sekunder di tempat lain.

  • Catat masukan mentah - ketika validasi JSON gagal di produksi, masukan mentah adalah artefak debugging paling berharga. Catat versi terpotong (500 karakter pertama) beserta kesalahannya.
  • Sertakan konteks sumber - catat dari mana JSON berasal: endpoint API mana, berkas mana, pesan antrean mana. Ini mengubah kesalahan penguraian generik menjadi insiden yang dapat ditindaklanjuti.
  • Siapkan peringatan untuk kegagalan penguraian - lonjakan kesalahan validasi JSON sering menandakan perubahan yang merusak pada API hulu atau deployment yang membawa bug serialisasi.
  • Uji dengan masukan tidak valid - sertakan JSON tidak valid (koma akhir, kutip hilang, tipe salah) dalam suite pengujian Anda untuk memastikan penanganan kesalahan Anda bekerja dengan benar.

Tip

Saat bekerja dengan respons API pihak ketiga, selalu validasi sebelum diproses - bahkan untuk API yang Anda percayai. Penyedia API mengubah bentuk respons, menambah field baru, dan memperkenalkan perubahan yang merusak. Validator skema dengan skema terversi memberi peringatan dini atas perubahan kontrak sebelum menyebabkan kegagalan senyap di hilir.

Validator JSON Schema

Validasi payload JSON apa pun terhadap JSON Schema dan dapatkan diagnostik kesalahan tingkat aturan dengan path field yang persis - tanpa instalasi, tanpa unggahan.

Open tool

Key takeaways

  • JSON valid mengikuti RFC 8259 secara ketat: hanya string berkutip ganda, tanpa koma akhir, tanpa komentar, tanpa `undefined`, dan tanpa karakter kontrol yang tidak di-escape.
  • Pemformat & Validator JSON memvalidasi dan memformat JSON sekaligus, dengan diagnostik kesalahan tingkat baris yang berjalan sepenuhnya di browser Anda.
  • Lima kesalahan JSON paling umum adalah: koma akhir, string berkutip tunggal, komentar, karakter kontrol tanpa escape, dan pembatas tak berpasangan - semuanya langsung tertangkap oleh validator.
  • Validasi sintaks memastikan dapat diurai; validasi JSON Schema memastikan data Anda sesuai kontrak yang diharapkan - kedua pemeriksaan melayani tujuan berbeda.
  • Gunakan `JSON.parse()` dalam try/catch untuk validasi dalam kode; gunakan `jq empty` untuk pemeriksaan CLI cepat di pipeline CI.
  • Format khusus seperti JSONL, JSON berkunci duplikat, dan JSON yang tertanam di YAML memerlukan validator spesifik format alih-alih parser JSON standar.
  • Validasi JSON saat ingest, bukan saat konsumsi - tolak data tidak valid di titik masuk sebelum menyebar ke dalam sistem Anda.

Pertanyaan yang sering diajukan

The fastest method is to paste the string into the JSON Formatter & Validator on Aback Tools - it reports valid or invalid in under a second with no setup. In code, use JSON.parse() wrapped in a try/catch in JavaScript, or json.loads() in a try/except in Python. Both throw an exception on invalid input and return the parsed object on success. For command-line checks, `jq empty input.json` exits with code 0 on valid JSON and code 1 on invalid.

Trailing commas are the single most common JSON error. They appear after the last property in an object or the last element in an array: `{"name": "Alice",}` or `[1, 2, 3,]`. JSON does not allow trailing commas even though JavaScript, Python, and most other languages do. The second most common error is single-quoted strings - JSON requires double quotes for both keys and values.

No. The JSON specification (RFC 8259) explicitly excludes comments. Both `//` line comments and `/* */` block comments are invalid in standard JSON. If you need JSON with comments, consider JSONC (used by VS Code config files) or JSON5, both of which are relaxed supersets. When using these formats, make sure your parser explicitly supports them - a standard JSON parser will reject the file.

Syntax validation checks whether the JSON is well-formed per the RFC 8259 specification - parseable by any standard JSON library. Schema validation checks whether the data inside the JSON conforms to a contract: required fields, correct types, value ranges, string formats. A JSON document can be syntactically valid but semantically wrong - for example, `{"age": "thirty"}` is valid JSON but fails a schema that requires age to be a number.

If your JSON.parse() call appears to succeed but returns null, the input string itself is the JSON text `null` - which is perfectly valid JSON. The value `null` is one of the six JSON value types. If you expected an object or array, the input may have been a null literal rather than a missing or empty string. Wrap JSON.parse() in a function that also checks `typeof result !== "object" || result === null` if you specifically need an object.

A JSONL file contains one JSON object per line and is not a valid JSON document on its own - a standard JSON parser rejects it because the file as a whole does not match the JSON grammar. Use the JSON Lines Validator & Fixer on Aback Tools, which validates each line individually and reports which line numbers have parse errors. For CLI validation, `jq empty < input.jsonl` also works by reading each line as a separate JSON value.

The JSON specification says behavior is undefined when an object contains duplicate keys - it does not explicitly forbid them, but different parsers handle them differently. Python keeps the last value, some parsers keep the first, and others throw an error. In practice, duplicate keys are almost always a bug. Use the JSON Duplicate Key Detector on Aback Tools to scan any payload for repeated keys before it causes a silent data-loss issue in your application.

The simplest option is `jq empty filename.json` - it exits with code 0 on valid JSON and code 1 on invalid, with no output on success. For schema validation in CI, use AJV CLI (`ajv validate -s schema.json -d data.json`) or write a short script using Python's jsonschema library. Both integrate cleanly with GitHub Actions, GitLab CI, and other systems that block on non-zero exit codes. Run validation as an early step before any processing to catch issues at the source.

ShareXLinkedIn