~/tools / LLM JSON Repair
LLM JSON Repair — Perbaiki JSON rusak yang dikembalikan model AI
Perbaiki JSON setengah jadi yang dikembalikan model AI: alat ini membuang blok kode dan basa-basi, menghapus koma di akhir dan komentar, memperbaiki tanda kutip, kunci, dan nilai ala Python, lalu mencantumkan persis apa yang diubah. Tidak ada data yang keluar dari browser Anda.
Hanya perbaikan dengan satu jawaban yang jelas yang diterapkan. Selebihnya dilaporkan beserta posisinya, bukan ditebak.
Semuanya berjalan di browser Anda. Teks yang Anda tempelkan tidak diunggah.
Model bahasa sering membungkus JSON dalam blok kode dan satu kalimat, lalu merusak sintaksnya: koma di akhir, tanda kutip tunggal, komentar, atau True alih-alih true. JSON.parse menolak semuanya. Alat ini menemukan JSON di dalam teks dan hanya memperbaiki masalah yang punya satu perbaikan yang jelas, lalu mencantumkan setiap perubahan agar Anda bisa menilainya. Jika keluaran terpotong, alat ini menutup bagian yang masih terbuka dan memperingatkan bahwa ada data yang mungkin hilang. Alat ini tidak menebak: masukan yang tidak bisa diperbaiki dilaporkan beserta posisinya, bukan diubah diam-diam.
Kapan dipakai
- Memperbaiki balasan model sebelum dimasukkan ke JSON.parse atau file konfigurasi
- Membersihkan balasan yang JSON-nya dibungkus blok kode dan penjelasan
- Memeriksa apa saja yang berubah, supaya nilai hasil perbaikan tidak lolos ke produksi tanpa disadari
Cara pakai
- Tempelkan balasan model, atau muat contoh.
- Baca JSON hasil perbaikan dan daftar perubahan di bawahnya.
- Salin hasilnya. Perubahan yang ditandai warna kuning bisa menghilangkan informasi, jadi periksalah.
Apa yang disebut JSON yang valid
- String dan nama anggota hanya memakai tanda kutip ganda. Tanda kutip tunggal bukan bagian dari tata bahasanya.
- Tidak ada komentar. Satu-satunya pengisi yang diizinkan adalah spasi putih.
- Koma hanya ditaruh di antara anggota atau elemen, jadi koma di akhir tidak diperbolehkan.
- Sebuah nilai adalah objek, array, angka, atau string, atau salah satu dari false, null, dan true. Infinity, NaN, dan undefined bukan nilai JSON.
- Angka tidak boleh diawali nol atau +, dan titik desimal memerlukan digit di kedua sisinya, sehingga 012, +5, .5, dan 5. semuanya tidak valid.
- Karakter kontrol U+0000 sampai U+001F di dalam string harus di-escape, jadi pemisah baris mentah di dalam string tidak valid.
- Tingkat teratas boleh berupa nilai apa pun, tidak hanya objek atau array.
Bagaimana keluaran model biasanya rusak
| Masalah | Contoh | Yang dilakukan alat ini |
|---|---|---|
| Blok kode dan basa-basi | Sure! ```json { … } ``` Hope this helps | Mengambil JSON-nya saja |
| Koma di akhir | [1, 2,] | Menghapus komanya |
| Komentar | {"a": 1 // note} | Menghapus komentarnya |
| Tanda kutip tunggal | {'a': 'b'} | Memakai tanda kutip ganda |
| Kunci tanpa kutip | {a: 1} | Memberi tanda kutip pada kuncinya |
| Nilai Python | {"ok": True, "x": None} | Menulis true dan null |
| Pemisah baris mentah di dalam string | "line one⏎line two" | Meng-escape-nya menjadi \n |
| NaN atau undefined | {"x": NaN} | Menulis null dan memperingatkan bahwa nilainya hilang |
| Balasan terpotong | {"items": [{"id": 1}, {"id": | Menutup bagian yang terbuka dan memperingatkan bahwa data mungkin hilang |
Apa yang aman diperbaiki, dan apa yang tidak
Perbaikan aman bila teks yang rusak hanya punya satu pembacaan yang masuk akal. Koma di akhir, komentar, atau blok kode dapat dihapus tanpa mengubah isi data. Perubahan lain mengubah maknanya, sehingga ditandai dan sebaiknya Anda periksa: menutup balasan yang terpotong menghasilkan JSON valid yang kekurangan data, dan mengubah NaN menjadi null membuang nilai aslinya.
Dua batasan berasal dari JSON itu sendiri. RFC 8259 menyatakan bahwa nama di dalam sebuah objek sebaiknya unik dan bahwa perilaku perangkat lunak tidak dapat diprediksi bila tidak unik; alat ini mempertahankan yang terakhir, seperti JSON.parse. RFC itu juga menyatakan bahwa perangkat lunak berinteroperasi dengan baik bila tidak mengharapkan rentang atau presisi lebih dari double IEEE 754. Alat ini menjaga angka persis seperti yang Anda tulis, tetapi program yang mengurai bilangan bulat yang sangat panjang menjadi double akan membulatkannya. Bilangan bulat antara -(2^53)+1 dan (2^53)-1 tepat.
Lebih baik: minta API memberi structured output
Memperbaiki hanyalah cadangan. API model dapat membatasi keluaran sesuai skema, dan ketiga vendor mendokumentasikannya secara berbeda.
- OpenAI: Structured Outputs membuat model menghasilkan respons yang mengikuti JSON Schema Anda, sedangkan mode JSON hanya menjamin JSON yang valid. Penolakan (refusal) mungkin tidak mengikuti skema, dan respons yang mencapai batas token maksimum tidak lengkap (status incomplete, alasan max_output_tokens).
- Anthropic: structured outputs memakai constrained decoding agar respons mengikuti skema Anda, dan dokumentasinya menyatakan hal ini berlaku dalam sebagian besar kasus. Penolakan (stop_reason refusal) atau balasan yang terpotong oleh max_tokens mungkin tidak sesuai skema, jadi periksa stop_reason sebelum mengurai.
- Google Gemini: model dikonfigurasi untuk menghasilkan JSON yang mengikuti skema yang Anda berikan. Kebenaran semantik tidak dijamin, jadi validasi nilainya, dan sebagian batasan seperti minLength dan maxLength tidak ditegakkan.
Tidak satu pun dari ketiga dokumentasi itu menjanjikan JSON valid ketika keluaran terpotong. Periksa alasan model berhenti sebelum Anda memercayai hasil yang sudah diurai.
Sumber (diperiksa 2026-10-23): RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format / OpenAI: Structured Outputs / Anthropic: Structured outputs / Google AI for Developers: Structured output
Tanya jawab
Apa saja yang diperbaiki?
Alat ini membuang blok kode dan teks di sekitar JSON; menghapus koma di akhir serta komentar // atau /* */; mengubah tanda kutip tunggal dan tanda kutip lengkung menjadi tanda kutip ganda; memberi tanda kutip pada kunci tanpa kutip; mengubah True, False, dan None menjadi true, false, dan null; menambahkan koma yang hilang di antara baris; meloloskan (escape) pemisah baris mentah di dalam string; dan menulis ulang angka seperti +5, .5, dan 0x1F menjadi angka JSON yang sah.
Apa yang tidak pernah diubah?
Nilai. String dipertahankan karakter demi karakter, dan angka mempertahankan digitnya, sehingga ID panjang seperti 12345678901234567890 tidak dibulatkan. Kunci ganda mengikuti JSON.parse: yang terakhir yang dipakai.
Bagaimana jika balasannya terpotong?
Alat ini menutup string, array, dan objek yang masih terbuka, dan membuang kunci yang belum punya nilai. Dengan begitu teksnya valid tetapi belum lengkap, sehingga hasilnya ditandai sebagai mungkin kehilangan data. Mintalah model melanjutkan, atau naikkan batas keluarannya, daripada memercayai hasil yang terpotong.
Mengapa NaN atau undefined berubah menjadi null?
JSON tidak punya NaN, Infinity, maupun undefined. Alat ini menulis null sebagai gantinya dan menandainya, karena nilai aslinya hilang.
Mengapa sebagian masukan ditolak?
Jika tidak ada satu perbaikan yang jelas, misalnya tanda elipsis (...) yang menggantikan item yang dilewati, atau kata tanpa tanda kutip di tempat yang seharusnya berisi nilai, alat ini berhenti dan menunjukkan posisinya, bukan menebak.
Apakah teksnya dikirim ke server?
Tidak. Perbaikan berjalan di browser Anda.