Langsung ke konten

Ubah JSON ke CSV

Ubah respons API, hasil ekspor, dan JSON Lines menjadi CSV yang terbuka rapi di Excel — record ditemukan untuk Anda, kolom bersarang diratakan menjadi kolom yang mudah dibaca, dan ID besar dipertahankan digit demi digit.

  • Tidak pernah disimpan
  • Tanpa antre, tanpa menunggu
  • Tanpa daftar, tanpa watermark

Cara kerjanya

1

Tambahkan JSON

Letakkan file .json atau .jsonl, atau tempel JSON langsung ke kotak.

2

Pilih record-nya

Daftar record ditemukan otomatis, bahkan jauh di dalam data.items. Pilih cara penulisan array dan periksa pratinjaunya.

3

Unduh

CSV dengan delimiter dan encoding yang Anda perlukan, siap untuk Excel, Google Sheets, atau database.

Meratakan pohon menjadi grid

JSON adalah pohon dan CSV adalah persegi panjang, dan seluruh konversi ini adalah soal bagaimana yang satu menjadi yang lain. Kasus yang rapi adalah array objek yang semuanya memiliki kunci yang sama — setiap objek menjadi baris, setiap kunci menjadi kolom, dan tidak ada yang hilang. Seperti itulah bentuk kebanyakan respons API dan hasil ekspor, itulah sebabnya ini biasanya langsung berhasil. Semua hal yang merepotkan berasal dari dokumen yang tidak berbentuk seperti itu.

Objek bersarang diratakan dengan menggabungkan kuncinya, sehingga objek alamat di dalam data pelanggan menjadi kolom seperti address.city dan address.postcode — konvensi yang ditangani semua spreadsheet tetapi tidak didefinisikan oleh standar mana pun. Kunci yang muncul di sebagian objek saja menjadi kolom yang kosong di baris-baris yang tidak memilikinya, dan itu jawaban yang benar: alternatifnya adalah membuang data yang hanya dimiliki sebagian record.

Array bersarang adalah titik di mana grid benar-benar tidak bisa mengikuti. Satu record berisi tiga baris pesanan adalah satu baris yang memuat daftar, bukan tiga baris — mengubahnya menjadi tiga akan menggandakan semua field lain dan diam-diam mengubah makna datanya. Jadi satu array objek diuraikan menjadi baris dan array lainnya ditulis ke dalam selnya sebagai teks. Jika yang Anda butuhkan adalah baris pesanannya, bukan pesanannya, arahkan konversi ke array itu; pohon dengan dua daftar berdampingan tidak punya satu persegi panjang yang benar, dan memilih salah satunya adalah keputusan yang hanya bisa Anda buat.

Dua detail sering menjebak di tahap akhir. Nilai yang berisi koma, tanda kutip, atau jeda baris diberi tanda kutip agar tetap utuh — itu CSV yang benar, meski terlihat aneh jika Anda memeriksa file mentahnya. Dan ID numerik yang panjang menjadi bahaya begitu CSV sampai di spreadsheet: Excel akan membacanya sebagai angka, membulatkannya di atas lima belas digit, dan membuang nol di depannya — masalah yang ditimbulkan oleh spreadsheet, bukan oleh konversinya.

Jika Anda butuh hal lain

jq adalah alat yang tepat ketika bentuknya perlu diputuskan, bukan ditebak: jq -r '.orders[] | [.id, .customer.name, .total] | @csv' mengambil tepat field yang Anda mau dari tepat tingkat yang Anda mau, kontrol yang tidak bisa ditawarkan perata otomatis. jq juga bekerja secara streaming, sehingga ukuran file tidak lagi menjadi pertimbangan.

Untuk data bersarang secara umum, Miller — mlr --ijson --ocsv flatten — dan pandas.json_normalize di Python memberi Anda kontrol eksplisit atas seberapa dalam perataan dilakukan dan apa yang dilakukan terhadap daftar. Dan jika JSON-nya memang hierarkis, bukan tabular, mengubahnya ke CSV mungkin sama sekali bukan ide yang tepat — database atau file JSON per baris mempertahankan struktur yang akan dibuang oleh grid.

Pertanyaan yang sering diajukan

Bagaimana JSON bersarang menjadi kolom?

Setiap field bersarang menjadi satu kolom yang dinamai sesuai path-nya: {"address": {"city": "Oslo"}} menghasilkan kolom address.city. Kolom muncul sesuai urutan kemunculan pertamanya di data Anda, bukan menurut abjad, dan record yang tidak memiliki suatu field cukup membiarkan sel itu kosong.

Apa yang terjadi pada array?

Anda yang memilih: gabungkan nilainya dalam satu sel ("red; green"), sebar ke kolom bernomor (tags.0, tags.1), biarkan sebagai teks JSON, atau — untuk array objek seperti baris pesanan — tulis satu baris per item dengan field induk diulang.

Apakah angka besar dipertahankan dengan tepat?

Ya. ID di luar kemampuan JavaScript — ID Twitter, Discord, dan database 64-bit — disalin digit demi digit, sementara kebanyakan konverter diam-diam membulatkan 1234567890123456789 menjadi 1234567890123456800.

Apakah JSON Lines (NDJSON) didukung?

Ya. File dengan satu objek JSON per baris dikenali otomatis, dan setiap baris menjadi satu baris CSV.

Bagaimana jika JSON saya ada error?

Anda mendapatkan baris dan kolom yang tepat dengan teks bermasalah yang disorot, beserta penjelasan sederhana — misalnya koma di akhir, atau tanda kutip tunggal yang tersalin dari kode JavaScript.

Apakah data saya disimpan di suatu tempat?

Tidak. JSON dibaca dan CSV ditulis di sini; tidak ada yang dikirim ke mana pun dan tidak ada yang disimpan.

Perlu diketahui: Hanya satu array objek yang bisa diuraikan menjadi baris dalam satu waktu; array lain ditulis ke dalam selnya. File yang sangat besar dibatasi oleh memori browser Anda.

Pasang alat ini di situs Anda

Gratis untuk blog, halaman kelas, atau artikel bantuan apa pun. Tempel satu potong kode dan pengunjung Anda bisa langsung memakainya di halaman Anda.