Pemeriksaan JSON menilai dua hal: apakah teksnya dapat dibaca dan apakah nilainya sampai apa adanya
JSON adalah teks yang mengikuti tata bahasa yang ditetapkan RFC 8259 dan ECMA-404. Objek diapit kurung kurawal { }, array diapit kurung siku [ ], sedangkan kunci dan string diapit tanda kutip ganda. Nilai yang boleh dipakai hanyalah string, angka, true, false, null, objek, dan array. Jika satu karakter saja menyimpang dari aturan ini, program penerima tidak dapat membaca seluruh dokumen. JSON.parse di JavaScript akan menghasilkan SyntaxError hanya karena satu koma di akhir atau satu tanda kutip tunggal.
Pemeriksa ini membaca teks yang Anda tempelkan secara ketat sesuai tata bahasa standar. Jika ada kesalahan, pemeriksa menampilkan baris dan kolom tempat pembacaan berhenti, baris-baris di sekitarnya, serta posisi kurung yang dibuka tetapi belum ditutup. Penulisan yang lazim muncul pada konfigurasi yang diedit manual atau teks yang disalin dari bahasa lain (komentar, koma di akhir, tanda kutip tunggal, kunci tanpa tanda kutip, True, dan sebagainya) dikelompokkan agar dapat diperbaiki otomatis. Jika tata bahasanya benar, strukturnya ditampilkan sebagai pohon yang dapat dilipat dan dibuka. Ketika Anda memilih sebuah nilai, path menuju nilai itu dan ukuran yang ditempatinya ikut ditampilkan.
Meskipun tata bahasanya benar, nilai dapat berubah di program penerima. Jika kunci yang sama muncul dua kali, umumnya nilai sebelumnya hilang. Bilangan bulat besar seperti 9007199254740993 dibaca sebagai 9007199254740992 di JavaScript. Hal-hal seperti ini dipisahkan dari galat dan dikumpulkan dalam daftar "Peringatan" di bawah.
Kapan JSON perlu diperiksa dan dibuka strukturnya
- Saat memeriksa respons API: Respons yang datang sebagai satu baris panjang menyulitkan Anda mencari nilai tertentu. Setelah ditempelkan, respons terbuka sebagai pohon, dan dengan mengklik nilai yang Anda perlukan, path seperti
$.items[2].pricedapat langsung disalin. - Setelah mengedit file konfigurasi: File yang diedit manual, seperti package.json, tsconfig.json, atau pengaturan VS Code, membuat program gagal berjalan hanya karena satu koma hilang. Jika Anda menempelkannya sebelum menyimpan, nomor barisnya langsung ditampilkan. Saat file yang mengizinkan komentar seperti tsconfig.json hendak diteruskan ke alat lain, perbaikan otomatis dapat membuat salinan tanpa komentar.
- JSON yang disalin dari log atau obrolan: Teks yang melewati aplikasi pesan atau editor dokumen dapat berubah menjadi tanda kutip melengkung, tercampur spasi khusus dari halaman web, atau berisi tanda kutip tunggal dan True seperti keluaran Python. Karakter yang tidak terlihat berbeda oleh mata ini ditunjukkan beserta posisinya.
- Saat mencari penyebab respons yang berat: Peta ukuran menggambar jumlah byte setiap nilai di bawah objek atau array yang dipilih sebagai luas. Bagian yang membengkakkan ukuran, seperti kolom berisi gambar mini dalam base64 atau array yang isinya berulang, terlihat sekilas.
- Sebelum mengirim ke sistem lain: Bilangan bulat besar seperti nomor pesanan atau ID tweet, kunci ganda dalam satu objek, dan escape emoji yang tidak berpasangan tidak terdeteksi oleh pemeriksaan tata bahasa saja, tetapi nilainya berubah di sisi penerima. Periksa lebih dulu pada daftar peringatan.
Cara memakai
- Tempelkan JSON pada kolom teks, atau buka file .json dengan "Buka file" atau dengan menyeretnya ke halaman. Pemeriksaan berjalan segera setelah Anda berhenti mengetik, dan Anda juga dapat memeriksa ulang seketika dengan Ctrl+Enter (di Mac, ⌘+Enter).
- Jika ada galat, diagnosis galat dan perbaikan otomatis muncul di bawahnya. Tombol "Ke lokasi galat" di baris status memindahkan kursor ke karakter tersebut di kolom teks. Jika yang ada hanya penulisan yang dapat diperbaiki otomatis, "Perbaiki N bagian dan terapkan ke teks" memperbaikinya sekaligus. Jika hasilnya tidak sesuai, tekan "Urungkan" di baris status.
- Jika tata bahasanya benar, pilih nilai pada pohon di sebelah kiri. Klik segitiga atau klik dua kali untuk membuka dan menutup cabang, dan Anda juga dapat berpindah dengan tombol panah. Saat kursor dipindahkan di kolom teks, pohon ikut menuju nilai tersebut.
- Di panel pemeriksaan sebelah kanan, pilih format path (JSONPath, JavaScript, Python, jq, JSON Pointer) lalu tekan "Salin path". "Salin nilai" hanya menyalin nilai yang dipilih sebagai JSON berindentasi 2 spasi (untuk string, teksnya tanpa tanda kutip).
- Dengan tombol di bawah kolom teks, Anda dapat merapikan dengan indentasi 2 atau 4 spasi atau memadatkan menjadi satu baris, lalu menyalin atau menyimpannya sebagai file .json. Saat dirapikan, angka dipertahankan persis seperti yang ditulis dan kunci ganda tidak dihapus.
Petunjuk galat dan cara memperbaikinya
Jika input pada tabel dimasukkan ke pemeriksa ini, petunjuk di kolom tengah akan muncul. Posisinya menunjuk karakter tempat pembacaan berhenti. Hanya untuk koma yang hilang, yang ditunjuk bukan tempat berhentinya pembacaan, melainkan tempat koma seharusnya berada, yaitu tepat setelah nilai sebelumnya. Kesalahan lupa memberi koma di akhir baris adalah yang paling sering terjadi, dan menunjuk akhir baris sebelumnya lebih mudah dicari daripada menunjuk karakter pertama baris berikutnya.
| Contoh input | Petunjuk pemeriksa ini | Cara memperbaiki |
|---|---|---|
[1, 2, 3,] | Ada koma setelah elemen terakhir | Hapus koma sebelum kurung penutup |
{"a": 1 "b": 2} | Koma di antara elemen hilang | Tambahkan koma tepat setelah 1 |
{'a': 1} | String harus diapit tanda kutip ganda | Ganti 'a' menjadi "a" |
{a: 1} | Kunci tanpa tanda kutip ganda: a | Apit kunci seperti "a" |
{"a": 1, /* catatan */ "b": 2} | JSON tidak mengizinkan komentar | Hapus komentar |
{"ok": True} | Ini penulisan Python, bukan nilai JSON: True | Tulis dengan huruf kecil: true |
{"avg": NaN} | Nilai ini tidak ada di JSON: NaN | Ganti dengan null atau string |
{"zip": 04001} | Angka tidak boleh diawali angka 0: 04001 | Tulis sebagai string, seperti "04001" |
["Baris pertama↵Baris kedua"] | Ada pergantian baris di dalam string | Tulis baris baru sebagai \n |
{"path": "C:\Users\siti"} | Escape ini tidak ada di JSON: \U | Tulis backslash dua kali: \\ |
{"data": [1, 2 | Dokumen berakhir, tetapi masih ada kurung yang belum ditutup | Periksa apakah dokumen terpotong; jika sudah selesai, tambahkan ]} |
{"a": 1}↵{"a": 2} | Masih ada karakter setelah nilai JSON berakhir | Kelompokkan dalam array atau perlakukan sebagai JSONL |
{“a”: 1} | Ini tanda kutip melengkung, bukan tanda kutip lurus: “ | Ganti dengan tanda kutip ganda lurus " |
Jika dokumen berakhir tetapi masih ada kurung yang terbuka, diagnosis menampilkan "penutup yang diperlukan di akhir" mulai dari yang paling dalam. Untuk {"data": [1, 2, penutupnya adalah ]}. Namun, jika responsnya terpotong saat disalin dari log atau layar, data bagian belakangnya memang tidak ada. Mengambil ulang respons aslinya lebih tepat daripada hanya menambahkan kurung agar tata bahasanya cocok.
Yang diubah dan tidak diubah oleh perbaikan otomatis
Perbaikan otomatis mengubah penulisan yang muncul dari format perluasan seperti JSON5 dan JSONC, dari kode Python dan JavaScript, atau dari proses melewati editor dokumen, menjadi JSON standar. Susunan baris dan indentasi dibiarkan, dan hanya karakter yang bersangkutan yang diganti. Baris yang hanya berisi komentar dihapus seluruhnya. Tombol "Perbaiki N bagian dan terapkan ke teks" baru muncul jika hasil perbaikan lolos pemeriksaan ketat sekali lagi. Jika masih ada galat lain meskipun ada penulisan yang dapat diperbaiki, Anda akan diminta memperbaiki galat itu lebih dulu, tanpa tombol.
| Penulisan yang diperbaiki | Input | Hasil perbaikan otomatis |
|---|---|---|
| Komentar | {"a": 1 /* catatan */} | {"a": 1 } |
| Koma di akhir | [1, 2, 3,] | [1, 2, 3] |
| Koma yang hilang | {"a": 1 "b": 2} | {"a": 1, "b": 2} |
| String bertanda kutip tunggal | {'name': 'it\'s'} | {"name": "it's"} |
| Tanda kutip melengkung | {“name”: “Siti”} | {"name": "Siti"} |
| Kunci tanpa tanda kutip | {name: "Siti", 2024: true} | {"name": "Siti", "2024": true} |
| Nilai Python dan huruf kapital | [True, False, None, NULL] | [true, false, null, null] |
| NaN, Infinity, undefined | [NaN, Infinity, -Infinity, undefined] | [null, null, null, null] |
| Angka +1, .5, 5., 0x1F | [+1, .5, 5., 0x1F] | [1, 0.5, 5.0, 31] |
| Baris baru dan tab di dalam string | ["Baris pertama↵Baris kedua", "a→b"] | ["Baris pertama\nBaris kedua", "a\tb"] |
| Spasi khusus (NBSP) | {"a":⍽1} | {"a": 1} |
| BOM di awal file | [BOM]{"a": 1} | {"a": 1} |
Mengubah NaN, Infinity, dan undefined menjadi null adalah perbaikan yang mengubah makna. Angka JSON tidak mengenal tak hingga maupun NaN, sehingga satu-satunya nilai yang dapat dipakai dalam standar adalah null. Namun, jika program penerima perlu membedakan "tidak ada nilai" dari "NaN", mengubahnya menjadi string lebih tepat. Angka heksadesimal hanya diubah menjadi desimal jika tidak melebihi 2⁵³−1.
Hal berikut sengaja tidak diperbaiki. Pada angka berawalan 0 (04001), tidak dapat diketahui apakah nilainya seharusnya string seperti kode pos atau angka. Pada [1,,2] dengan koma berurutan, tidak dapat diketahui apakah Anda bermaksud menyisipkan nilai kosong, dan dokumen yang terpotong tidak dapat dipulihkan isinya yang hilang. JSONL, dengan satu objek per baris, bukan untuk diperbaiki melainkan format yang berbeda, jadi gunakan konverter array JSON ↔ JSONL. Elemen array tanpa koma di baris yang sama ([1 -2], ["a" "b"]) juga dibiarkan: di Python atau JavaScript, itu berarti pengurangan atau penggabungan string, sehingga menambahkan koma akan mengubah maknanya. Koma hanya disisipkan di pergantian baris dan sebelum kunci objek.
Lima format path
Saat Anda memilih nilai pada pohon, path menuju nilai itu ditulis dalam lima format. Nilai yang sama ditulis berbeda sesuai tempat pemakaiannya. JSONPath dipakai pada alat uji API seperti Postman dan pada kueri basis data, format JavaScript dan Python dipakai di kode, jq di baris perintah, dan JSON Pointer pada JSON Patch (RFC 6902) atau $ref di JSON Schema. data pada format JavaScript dan Python dapat dianggap sebagai nama variabel yang menampung hasil pembacaan JSON.
| JSONPath | JavaScript | Python | jq | JSON Pointer |
|---|---|---|---|---|
$.items[2].options.gift_wrap | data.items[2].options.gift_wrap | data["items"][2]["options"]["gift_wrap"] | .items[2].options.gift_wrap | /items/2/options/gift_wrap |
$.headers['x-request-id'] | data.headers["x-request-id"] | data["headers"]["x-request-id"] | .headers["x-request-id"] | /headers/x-request-id |
$.café.menü | data.café.menü | data["café"]["menü"] | .["café"]["menü"] | /café/menü |
$['a/b']['m~n'] | data["a/b"]["m~n"] | data["a/b"]["m~n"] | .["a/b"]["m~n"] | /a~1b/m~0n |
$ | data | data | . | string kosong |
Rentang kunci yang boleh ditulis dengan titik (.) berbeda untuk setiap format. Standar JSONPath (RFC 9535) mengizinkan huruf, garis bawah, dan karakter U+0080 ke atas pada notasi titik, sehingga kunci seperti café atau menü juga ditulis $.café.menü. Pada jq, notasi titik hanya berlaku untuk kunci berisi huruf, angka, dan garis bawah, sehingga kunci yang memuat karakter non-ASCII atau tanda hubung diapit kurung siku seperti .["café"]. JavaScript mengikuti aturan pengenal, jadi kunci café ditulis dengan titik, sedangkan kunci bertanda hubung seperti x-request-id ditulis dengan kurung siku. JSON Pointer menyambung kunci dengan /, sehingga ~ di dalam kunci diganti ~0 dan / diganti ~1, dan untuk menunjuk seluruh dokumen dipakai string kosong.
Saat tata bahasanya benar tetapi nilainya berubah
Angka besar. Tata bahasa JSON tidak membatasi jumlah digit angka. Namun RFC 8259 menyebutkan bahwa sebagian besar program memperlakukan angka sebagai IEEE 754 binary64 (bilangan floating-point presisi ganda), sehingga bilangan bulat hanya terbaca sama di mana pun pada rentang −(2⁵³−1) sampai 2⁵³−1. Bilangan bulat yang lebih besar, atau pecahan dengan digit signifikan yang terlalu panjang, berubah menjadi nilai binary64 terdekat. Pemeriksa ini membandingkan digit signifikan pada teks yang ditulis dengan nilai yang terbaca, dan hanya angka yang nilainya berubah yang ditandai sebagai peringatan.
| Angka yang ditulis di JSON | Nilai yang dibaca JavaScript | Pemeriksa ini |
|---|---|---|
9007199254740991 | 9007199254740991 | Tetap (bilangan bulat aman terbesar) |
9007199254740993 | 9007199254740992 | Kehilangan presisi |
1234567890123456789 | 1234567890123456800 | Kehilangan presisi |
0.1234567890123456789 | 0.12345678901234568 | Kehilangan presisi |
1.10 | 1.1 | Tetap (nilainya sama; tulisannya juga dipertahankan saat dirapikan) |
1e400 | Infinity | Angka di luar jangkauan (di Python menjadi inf) |
1e-400 | 0 | Angka yang menjadi 0 |
Untuk bilangan bulat besar yang tidak dipakai berhitung, seperti nomor pesanan atau nomor anggota, mengirimkannya sebagai string seperti "1234567890123456789" lebih aman. RFC 7493 (I-JSON) juga menganjurkan agar angka yang memerlukan jangkauan atau presisi lebih besar daripada binary64 dinyatakan sebagai string.
Kunci ganda. RFC 8259 menetapkan bahwa kunci dalam satu objek sebaiknya unik (SHOULD). Menurutnya, jika ada yang sama, ada program yang hanya memakai nilai terakhir, ada yang menghasilkan galat, dan ada yang meneruskan semuanya, sehingga perilakunya tidak dapat diperkirakan. JSON.parse di JavaScript dan json di Python memakai nilai yang terakhir. Pemeriksa ini tidak menolak kunci ganda sebagai galat, tetapi menandainya sebagai peringatan, dan jika kunci itu dipilih pada pohon, muncul tombol untuk menuju kunci yang sama yang muncul lebih dulu.
Surrogate tanpa pasangan. Karakter di atas U+FFFF seperti emoji ditulis sebagai sepasang escape, misalnya \ud83d\ude00. Jika terpotong di tengah dan hanya \ud83d yang tersisa, tata bahasanya masih lolos, tetapi hasilnya adalah karakter yang tidak dapat dikonversi ke UTF-8, sehingga di sisi penerima teksnya rusak atau terjadi galat. I-JSON tidak mengizinkan karakter semacam ini.
BOM. Editor seperti Notepad kadang menambahkan BOM (U+FEFF) di awal file. RFC 8259 melarang penambahan BOM saat mengirim JSON (MUST NOT) dan mengizinkan pembaca mengabaikannya (MAY). Meskipun begitu, JSON.parse di JavaScript dan json.loads di Python (untuk input string) menganggap BOM sebagai galat. Pemeriksa ini melewati BOM saat membaca tetapi menandainya sebagai peringatan, dan menghapusnya dari hasil perapian dan pemadatan.
Urutan kunci. Pada prinsipnya urutan kunci objek JSON dianggap tidak bermakna, tetapi bagi pembaca manusia urutan penulisan itu penting. Objek JavaScript menempatkan kunci berbentuk bilangan bulat seperti "2024" di depan kunci lainnya (OrdinaryOwnPropertyKeys dalam ECMAScript). Karena itu, pemeriksa ini tidak memakai JSON.parse bawaan browser, melainkan pembaca sendiri yang menggambar pohon sesuai urutan penulisan.
Cara membaca peta ukuran
Peta ukuran adalah gambar yang membagi luas menurut jumlah byte UTF-8 yang ditempati setiap nilai tepat di bawah objek atau array yang dipilih dalam teks asli. Untuk objek, nama kunci, nilai, dan spasi di antaranya ikut dihitung. Petak disusun dari yang terbesar dengan bentuk yang mendekati persegi, paling banyak 30 petak, dan nilai-nilai kecil yang kurang dari 0,4% dari keseluruhan digabung menjadi satu petak "Lainnya" yang bergaris miring. Warna petak sejenis dengan warna teks pada pohon (objek, array, string, angka, boolean, null).
Jika Anda mengklik petak, nilai itu terpilih, dan jika berupa objek atau array, pohon terbuka dan peta masuk satu tingkat ke dalam. Klik penunjuk posisi di atas (Semua › items › 0) untuk keluar ke tingkat luar. Pada contoh "Respons API pesanan", items yang berisi tiga barang paling lebar, dan jika Anda masuk ke dalamnya, barang yang memiliki banyak opsi tampak lebih lebar. Pada respons sebenarnya, gambar yang dimasukkan dalam base64, deskripsi panjang yang berulang setiap kali, dan kolom debug yang tidak terpakai sering muncul sebagai petak yang lebar.
Kesalahan yang sering terjadi
- Mengira objek JavaScript adalah JSON:
{name: 'a', list: [1, 2,],}yang ditulis di kode benar di JavaScript, tetapi bukan JSON. Kunci dan string harus diapit tanda kutip ganda, dan koma di akhir harus dihapus. Perbaikan otomatis menangani ketiganya sekaligus. - Menyalin keluaran Python apa adanya: Hasil
print(dict)memakai tanda kutip tunggal serta True dan None, seperti{'ok': True, 'x': None}. Jika Anda memerlukan JSON, keluarkan denganjson.dumps(). Jika sudah telanjur disalin, perbaikan otomatis dapat mengubahnya. - Backslash pada path Windows:
\Upada"C:\Users"bukan escape JSON, sehingga menjadi galat. Tulis dua kali seperti"C:\\Users", atau pakai garis miring seperti"C:/Users". Nama folder yang diawali\natau\tberubah menjadi baris baru atau tab tanpa galat, jadi lebih perlu diwaspadai. - Angka dan teks yang berbentuk angka:
42dan"42", sertafalsedan"false", adalah nilai yang berbeda. Pada pohon, angka tampak berwarna ungu dan string berwarna cokelat dengan tanda kutip, sehingga Anda dapat memeriksa apakah tipenya sesuai maksud. - Memeriksa JSONL sebagai satu dokumen: Teks dengan satu objek per baris seperti file log menghasilkan galat "Masih ada karakter setelah nilai JSON berakhir" setelah objek pertama. Periksa satu baris demi satu baris, atau ubah menjadi array.
- Mengira lolos pemeriksaan tata bahasa berarti datanya sudah tervalidasi:
{"age": -5}dan{"date": "2026-02-30"}adalah JSON yang valid. Kunci wajib, rentang nilai, dan keberadaan tanggal harus dipastikan dengan JSON Schema atau validasi di sistem penerima.
Batasan dan hal yang perlu diperhatikan
- Input diperiksa sampai 5 MB (5.242.880 byte). File yang dapat dibaca adalah UTF-8 (termasuk yang memakai BOM) dan file UTF-16 yang memakai BOM. Penyarangan dibaca sampai 500 tingkat.
- Pohon menggambar sampai 3.000 baris sekaligus, dan array yang berisi banyak elemen dibuka 200 elemen demi 200 elemen dengan "Tampilkan berikutnya". Pencarian menghitung sampai 10.000 hasil pertama.
- Nomor kolom dihitung dalam code point. Karakter yang memakai dua unit di UTF-16, seperti emoji, tetap dihitung satu kolom, sehingga bisa berbeda dari "position" pada pesan galat browser yang menghitung posisi dalam unit UTF-16.
- Perbaikan otomatis hanya mengubah penulisan. Ada perbaikan yang mengubah makna, seperti mengubah NaN dan Infinity menjadi null, jadi periksa daftarnya sebelum memakainya. Angka berawalan 0, koma berurutan, dan dokumen terpotong tidak diperbaiki.
- Validasi JSON Schema, perbandingan dua JSON, dan pengurutan kunci tidak tersedia. Untuk pembahasan perapian indentasi dan pemadatan yang lebih rinci, gunakan pemformat dan pemadat JSON.
Sumber
- 01IETF — RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format§2 tata bahasa, §4 nama sebaiknya unik (SHOULD), §6 binary64 dan interoperabilitas ±(2⁵³−1), §8.1 jangan menambahkan BOM dan boleh diabaikan saat membaca, §8.2 surrogate tanpa pasangan — diperiksa 2026-10-22
- 02Ecma International — ECMA-404: The JSON data interchange syntaxStandar tata bahasa JSON (spasi hanya empat jenis: tab, baris baru, carriage return, dan spasi)
- 03IETF — RFC 7493: The I-JSON Message Format§2.1 surrogate dan nonkarakter dilarang, §2.2 angka di luar binary64 dianjurkan berupa string, §2.3 nama ganda dilarang (MUST NOT)
- 04IETF — RFC 9535: JSONPath: Query Expressions for JSON§2.5.1.1 member-name-shorthand (huruf, garis bawah, karakter U+0080 ke atas), selektor nama dengan tanda kutip tunggal dan ganda
- 05IETF — RFC 6901: JavaScript Object Notation (JSON) PointerPath yang disambung dengan /, ~ menjadi ~0 dan / menjadi ~1, string kosong menunjuk seluruh dokumen
- 06jq Manual.foo hanya untuk kunci berisi huruf, angka, dan garis bawah; kunci lain ditulis ."foo" atau .["foo"]
- 07Dokumentasi Python — json: JSON encoder and decoder"Repeated Names Within an Object": nama yang sama hanya menyisakan nilai terakhir; NaN dan Infinity diterima secara bawaan
- 08The JSON5 Data Interchange Format§1.1 perluasan yang tidak ada di JSON: komentar, koma di akhir, tanda kutip tunggal, kunci berupa pengenal, heksadesimal, titik desimal di awal atau akhir, tanda +, NaN dan Infinity
- 09MDN — JSON.parse()Koma di akhir dan tanda kutip tunggal menghasilkan SyntaxError
- 10MDN — Number.MAX_SAFE_INTEGERBilangan bulat terbesar yang dapat dinyatakan JavaScript secara tepat, 2⁵³−1 = 9.007.199.254.740.991
- 11ECMAScript Language Specification — OrdinaryOwnPropertyKeys§10.1.11.1 kunci berbentuk indeks array didaftar lebih dulu menurut urutan angka
Pertanyaan yang sering diajukan
Mengapa baris dan kolom galat berbeda dari tempat yang sebenarnya salah?
Posisi yang ditampilkan adalah tempat pembaca berhenti karena tidak dapat membaca lebih lanjut. Untuk koma yang hilang, yang ditunjuk adalah tempat koma seharusnya berada, yaitu tepat setelah nilai sebelumnya. Namun jika tanda kutip penutup hilang, string berlanjut sampai baris berikutnya dan pembacaan baru berhenti setelahnya. Dengan melihat baris di sekitarnya dan "posisi kurung atau string yang dibuka" pada diagnosis galat, penyebabnya lebih mudah ditemukan.
Penulisan apa saja yang diperbaiki oleh perbaikan otomatis?
Ada 12 jenis: komentar, koma di akhir, koma yang hilang di antara baris, string bertanda kutip tunggal dan kutip melengkung, kunci tanpa tanda kutip, True, False, None serta TRUE dan NULL berhuruf kapital, NaN, Infinity, undefined (menjadi null), angka seperti +1, .5, 5., 0x1F, baris baru dan tab di dalam string, spasi khusus, dan BOM di awal. Susunan baris dibiarkan dan hanya karakter yang bersangkutan yang diganti. Tombol baru muncul jika hasil perbaikan lolos pemeriksaan ketat sekali lagi.
Apakah file JSONC atau JSON5 yang berisi komentar dapat diperiksa?
Pemeriksa ini memeriksa menurut JSON standar (RFC 8259), sehingga komentar dan koma di akhir ditandai sebagai galat. Sebagai gantinya, perbaikan otomatis dapat membuat JSON standar dengan membuang komentar, koma di akhir, tanda kutip tunggal, dan kunci tanpa tanda kutip. Jika file aslinya tetap dipakai sebagai JSONC, gunakan hasil perbaikan sebagai salinan untuk diteruskan ke program lain.
Mengapa angka besar berubah menjadi seperti 9007199254740992?
Banyak program, termasuk JavaScript, membaca angka JSON sebagai bilangan floating-point IEEE 754 binary64. Bilangan bulat yang dapat dinyatakan format ini secara tepat hanya sampai ±(2⁵³−1), yaitu 9.007.199.254.740.991, sehingga bilangan bulat yang lebih besar atau pecahan dengan lebih dari 17 digit signifikan berubah menjadi nilai terdekat. Pemeriksa ini menampilkan angka yang nilainya berubah pada daftar peringatan bersama "nilai yang dibaca JavaScript". Untuk nomor identitas, mengirimkannya sebagai string lebih aman.
Apa yang terjadi jika satu objek memiliki kunci yang sama dua kali?
RFC 8259 hanya menetapkan bahwa kunci sebaiknya unik (SHOULD), dan menyebutkan bahwa perilaku saat kunci bertabrakan berbeda pada setiap program. JSON.parse di JavaScript dan json di Python memakai nilai yang terakhir dan membuang nilai sebelumnya. Pemeriksa ini tidak menolaknya sebagai galat tata bahasa, melainkan menandainya sebagai peringatan, dan kedua nilai tetap ada pada pohon dan hasil perapian.
Apa perbedaan path JSONPath dan jq?
JSONPath (RFC 9535) diawali $ dan ditulis seperti $.items[0].name, dan karakter non-ASCII seperti é atau ü juga dapat ditulis dengan notasi titik. jq diawali . dan ditulis seperti .items[0].name, tetapi notasi titiknya hanya untuk kunci berisi huruf, angka, dan garis bawah, sehingga kunci yang memuat karakter non-ASCII atau tanda hubung ditulis .["kunci"]. JSON Pointer (RFC 6901) disambung dengan / seperti /items/0/name, dengan ~ diganti ~0 dan / diganti ~1.
Apa dasar ukuran pada peta ukuran?
Untuk setiap nilai tepat di bawah objek atau array yang dipilih, diukur jumlah byte UTF-8 yang ditempatinya dalam teks asli (termasuk nama kunci dan spasi di dalam nilai), lalu dibagi menjadi luas. Maksimal 30 petak digambar mulai dari yang terbesar, dan sisanya yang sangat kecil digabung menjadi satu petak "Lainnya". Gunakan untuk mencari tahu mengapa respons API berat dan array mana yang menempati ukuran paling besar.
Apakah JSON yang saya masukkan dikirim ke server atau disimpan?
Tidak. Teks yang ditempelkan dan file yang dibuka hanya diperiksa dan dikonversi di dalam browser ini, tanpa dikirim ke server dan tanpa disimpan. Isinya juga tidak dimasukkan ke alamat halaman, jadi setelah memeriksa respons yang berisi token atau data pribadi, cukup tutup tab atau tekan "Hapus".