KeroTools

Konversi JSON ke CSV atau Spreadsheet

Ubah array JSON menjadi file CSV yang bisa dibuka di Excel atau Sheets.

Letakkan file Anda di sini atau klik

File JSON (.json)

Data Anda tidak keluar dari perangkat

Tidak ada yang perlu dihapus kemudian

Aman untuk respons API mentah

Jalan di semua browser modern

Cara kerjanya

  1. 1

    Tempel atau jatuhkan JSON Anda

    Array berisi objek langsung berfungsi; tempel teksnya atau jatuhkan berkas .json ke halaman.

  2. 2

    Periksa baris judulnya

    Pastikan kolomnya sesuai harapan sebelum Anda membawa berkasnya ke lembar sebar.

  3. 3

    Unduh berkas CSV-nya

    Buka di Excel, Google Sheets, atau Numbers, atau serahkan ke sistem yang mengimpor CSV.

Mengapa memakai alat ini

Penyarangan diratakan

Objek di dalam objek menjadi nama kolom bertitik alih-alih dibuang atau ditumpahkan sebagai teks mentah ke satu sel.

Satu judul untuk data tak seragam

Catatan yang tidak memiliki kunci sama tetap berbaris rapi, karena baris judulnya adalah gabungan semua kunci yang terlihat.

Terbuka bersih di Excel

Pengutipan dan escaping mengikuti aturan yang benar-benar diterapkan lembar sebar, jadi kolomnya mendarat di tempatnya.

Tidak ada yang diunggah

Penguraiannya terjadi di browser Anda — respons API penuh catatan pelanggan tidak pernah sampai ke server.

Tanpa batas catatan

Batasnya hanya memori perangkat Anda, bukan plafon baris dari paket gratis.

Gratis tanpa akun

Tanpa pendaftaran, tanpa watermark, dan tanpa batas jumlah berkas yang Anda konversi.

Sebuah pohon harus menjadi persegi panjang, dan Anda yang memilih tempat memotongnya

Di sinilah seluruh kesulitan arah ini. JSON adalah pohon: objek di dalam objek, array di dalamnya. CSV adalah persegi panjang: sekumpulan kolom tetap, satu catatan per baris, tanpa penyarangan sama sekali. Jadi sebuah konverter tidak bisa sekadar menerjemahkan — ia harus meratakan, dan meratakan berarti memutuskan apa yang dihitung sebagai satu baris. Untuk array sederhana berisi objek datar jawabannya jelas: satu objek per baris. Untuk apa pun yang lebih dalam, itu pilihan sungguhan. Sebuah pesanan yang memuat daftar item bisa menjadi satu baris per pesanan dengan itemnya diremas ke dalam satu sel, atau satu baris per item dengan detail pesanan diulang di sepanjang tiap baris. Tak satu pun keliru; keduanya menjawab pertanyaan berbeda. Ketahui mana yang diharapkan tujuan Anda sebelum mengonversi, karena pilihan yang salah menghasilkan berkas yang tampak benar dan menghitung segalanya dua kali.

Catatan JSON tak wajib sepakat, dan CSV memaksa mereka sepakat

Sebuah array objek JSON boleh tak seragam. Catatan pertama punya tujuh kunci, yang keempat punya sembilan, dan yang kesembilan kehilangan satu yang dimiliki semua lainnya — ini JSON yang sepenuhnya sah, dan respons API menghasilkannya terus-menerus karena bidang opsional cukup dihilangkan alih-alih diisi null. Sebuah CSV punya satu baris judul yang mengatur setiap baris di bawahnya, jadi kumpulan kolomnya harus berupa gabungan setiap kunci yang muncul di mana pun, dan catatan yang kehilangan sebuah kunci mendapat sel kosong. Itu satu-satunya jawaban yang bisa dijalankan, tapi ia menyembunyikan sesuatu: sel kosong tak bisa memberi tahu Anda apakah kuncinya tidak ada, ada tapi null, atau ada dan berisi string kosong. Ketiganya runtuh menjadi ketiadaan. Kalau pembedaan itu penting bagi apa pun yang membaca berkasnya berikutnya, ia harus dipertahankan di dalam JSON sebelum konversi, karena CSV tak punya cara membawanya.

Tipe hilang saat keluar, dan itu biasanya tak masalah

Saat masuk ke JSON, pertanyaan sulitnya adalah string mana yang seharusnya menjadi angka. Saat keluar, pertanyaannya lenyap — CSV tak punya tipe, jadi `42`, `true`, dan `null` semuanya menjadi karakter biasa dan maknanya diserahkan kepada apa pun yang membaca berkasnya. Umumnya ini tak berbahaya, karena pembacanya adalah lembar sebar dan seorang manusia. Ia menjadi kelihatan di dua tempat. Bidang boolean tiba sebagai teks harfiah `true` dan `false`, yang terurut dan tersaring berbeda dari kotak centang dan mungkin perlu dikonversi kalau seorang rekan hendak mengolahnya. Dan null menjadi sel kosong yang — seperti di atas — tak bisa dibedakan dari bidang yang hilang. Keduanya bukan cacat konversi; keduanya layak diketahui sebelum ada orang membangun rumus di atas hasilnya.

Kenapa sebuah bidang teks bisa berubah menjadi rumus

Inilah satu-satunya persoalan keamanan yang sungguhan di arah ini, dan ia ada karena string JSON kerap membawa teks yang diketik orang. Ketika sebuah lembar sebar membuka CSV, ia memperlakukan sel mana pun yang diawali `=`, `+`, `-`, atau `@` sebagai rumus, bukan teks. Deskripsi produk yang dimulai dengan tanda minus, bidang catatan yang diawali `@nama`, baris alamat yang dibuka dengan tanda plus — masing-masing menjadi sesuatu yang coba dievaluasi lembar sebar, dan sebaik-baiknya Anda menemukan galat di sel itu alih-alih data Anda. Seburuk-buruknya, sebuah nilai yang dirancang sengaja menjadi rumus yang dapat dieksekusi di buku kerja orang lain, dan itulah sebabnya hal ini dicatat sebagai injeksi CSV, bukan keanehan pemformatan. Kalau JSON-nya berasal dari formulir yang diisi pengguna sungguhan, telusuri kolom-kolom itu setelah membuka alih-alih menganggap teksnya tiba sebagai teks.

Tujuannya adalah manusia, dan itulah intinya

Konversi ini berjalan ke satu arah tertentu karena alasan tertentu. JSON pergi ke program; CSV pergi ke orang, dan ke sistem yang sudah orang jalankan. Sebuah respons API menjadi lembar yang bisa diurutkan dan disaring seorang rekan. Ekspor dari sebuah alat menjadi berkas yang bisa dibuat tabel pivot oleh tim keuangan. Sebuah daftar catatan menjadi sesuatu yang bisa Anda serahkan kepada orang yang tak akan pernah membuka editor kode. Itulah sebabnya sasarannya CSV alih-alih membiarkan datanya apa adanya, dan itulah sebabnya baris judul lebih penting daripada ukuran bita — yang dituju adalah keterbacaan. Kalau audiensnya program dan bukan orang, kemungkinan besar Anda menginginkan arah sebaliknya, atau tidak menginginkan konversi sama sekali. Dan kalau berkasnya langsung menuju Excel lalu menetap di sana, beralih ke buku kerja sungguhan melewatkan pertanyaan pengodean dan pemisah sepenuhnya.

Kenapa konversi lokal penting untuk jenis berkas ini

JSON yang orang ubah menjadi CSV hampir selalu sesuatu yang dihasilkan sebuah sistem: respons API, ekspor basis data, muatan webhook, laporan dari alat internal. Muatan semacam itu membawa lebih banyak daripada bidang yang sedang Anda lihat. Pengenal internal, alamat surel, cap waktu, dan kadang sebuah token akses atau pengenal sesi duduk di kunci-kunci yang tak pernah Anda gulir hingga ke sana, karena Anda datang hanya untuk tiga kolom. Konverter yang dihosting menerima semuanya. Alat ini berjalan sepenuhnya di browser Anda: teksnya diurai di halaman dan CSV-nya ditulis kembali tanpa satu pun permintaan jaringan yang membawa datanya, dan itu bisa Anda pastikan di tab Network pada developer tools. Ketika masukannya berupa respons API mentah, perbedaan itu bernilai jauh lebih besar daripada dua menit yang dihematnya.

Kesalahan umum yang sebaiknya dihindari

  • Mengonversi tanpa memutuskan apa itu satu baris. Pesanan berisi item bisa menjadi satu baris per pesanan atau satu per item — pilih dengan sengaja, karena pilihan keliru menghasilkan berkas yang tampak benar dan menggandakan totalnya.
  • Memercayai bahwa sel kosong berarti sesuatu yang spesifik. Kekosongan bisa berarti kunci yang hilang, null, atau string kosong; kalau pembedaannya penting, pertahankan di dalam JSON sebelum mengonversi, karena CSV tak bisa membawanya.
  • Membuka hasilnya tanpa memeriksa sel yang diawali `=`, `+`, `-`, atau `@`. Lembar sebar memperlakukannya sebagai rumus, jadi teks ketikan pengguna bisa tiba sebagai galat atau, lebih buruk, sesuatu yang dapat dieksekusi.
  • Menganggap tiap catatan punya kunci yang sama. Respons API menghilangkan bidang opsional alih-alih menge-null-kannya, jadi judulnya harus berupa gabungan semua kunci — pastikan jumlah kolomnya sesuai harapan.
  • Menempelkan respons API mentah ke konverter daring. Muatan semacam itu biasanya membawa pengenal, surel, dan kadang token di bidang yang tak pernah Anda gulir hingga ke sana; konversikan secara lokal.

Perbandingan

AspekAlat iniKonverter daringSkrip buatan sendiri
Data dikirim ke serverTidak pernahUmumnya yaTidak
Perlu penyiapanTidak adaTidak adaRuntime dan dependensi
Penyarangan diratakanYa, kolom bertitikBeragamSesuai yang Anda tulis
Batas catatanHanya memori perangkatSering dibatasiTidak ada
Akun atau pendaftaranTidak perluSering dimintaTidak perlu
HargaGratisGratis / paket berbayarWaktu Anda

Fitur

Kolom bertitik untuk penyarangan

Objek `address` yang bersarang menjadi `address.city` dan `address.postcode`, bukan satu gumpalan teks.

Judul gabungan

Tiap kunci yang ditemukan di seluruh catatan muncul sekali, jadi bidang yang hilang di sebagian baris tetap dapat kolom.

Pengutipan sesuai standar

Nilai yang memuat koma, tanda kutip, atau ganti baris dikutip dan di-escape agar struktur barisnya selamat.

Keluaran UTF-8

Huruf beraksen, teks Arab, Turki, dan karakter non-ASCII lainnya ditulis tanpa berubah.

Mampu menangani array besar

Puluhan ribu catatan terkonversi tanpa antrean unggahan.

Tanpa instalasi

Tidak ada unduhan, runtime, atau dependensi — jalan langsung di halaman web.

Ramah Arab dan RTL

Antarmuka lengkap dalam delapan bahasa, termasuk Arab kanan-ke-kiri.

Aman secara bawaan

Disajikan lewat HTTPS, tanpa pelacakan berkas dan tanpa unggahan ke pihak ketiga.

Jalan luring setelah dimuat

Halamannya tetap berfungsi setelah tabnya termuat, karena konversinya lokal.

Siapa yang memakainya

Pengembang

Mengubah respons API menjadi lembar yang benar-benar bisa dibaca rekan non-teknis.

Analis data

Membawa ekspor JSON ke bentuk yang menerima tabel pivot dan penyaringan tanpa lebih dulu menulis pengurai.

Tim dukungan

Mengonversi muatan tiket atau log yang diekspor menjadi sesuatu yang bisa diurutkan di lembar sebar.

Staf operasional

Menyerahkan ekspor sistem ke keuangan atau manajemen dalam format yang sudah mereka pakai tiap hari.

Pertanyaan yang Sering Diajukan

Tidak. Konversi berjalan sepenuhnya di browser Anda — data Anda tidak pernah diunggah, disimpan, atau dibagikan.

Ya. Setiap baris dan kolom dikonversi dengan setia; strukturnya dipertahankan.

Ya — sepenuhnya gratis, tanpa akun, tanpa watermark, dan tanpa batas jumlah file.