Bahasa Indonesia

Alat pengembang · Konverter sintaksis

CSV hingga JSON dan JSON hingga CSV: header, nilai string, dan perataan

· Cara kerjanya

json csv format data

Pohon JSON bersarang yang rata menjadi satu arah menjadi kolom CSV bertitik
Ilustrasi vektor ToolAcre asli

CSV datar, tanpa tipe, dan ambigu tentang pembatasnya sendiri, sedangkan JSON bertumpuk dan diketik. Postingan ini menunjukkan bagaimana konverter memetakan baris ke objek dan sebaliknya, dan di mana informasi hilang di setiap arah.

Setiap angka muncul dalam tanda kutip — ekspor CSV dikonversi menjadi JSON dengan 42 menjadi "42" dan kode ZIP mempertahankan angka nol di depannya untuk sekali ini

Buku kerja meminta contoh CSV-ke-JSON, namun ToolAcre tidak pernah membaca CSV. Mesin mengiklankan sembilan pasangan terarah, dan tidak ada yang dimulai dengan CSV. Membaca file memerlukan pilihan tentang pembatas, kutipan, keberadaan header, dan tipe sel; panel ini menolak membuat empat tebakan diam-diam. Oleh karena itu, artikel yang diperbaiki mendokumentasikan arah pengiriman JSON-ke-CSV.

Keputusan satu arah itu terlihat pada antarmuka dan kesalahan. CSV muncul sebagai target, bukan sumber, dan upaya sebaliknya akan mengembalikan `UNSUPPORTED_CONVERSION` dengan saran untuk menggunakan alat yang menanyakan tentang dialek dan jenisnya. Judul yang menyarankan kedua arah akan salah menyajikan produk meskipun topik umumnya umum terjadi di tempat lain.

CSV tidak dibaca di sini: mulai dengan jalur JSON-ke-CSV yang sebenarnya dikirimkan oleh alat

Array root JSON memasok baris. Sebuah benda polos menjadi satu baris. Sebuah objek yang satu-satunya kuncinya menyimpan sebuah array akan membuka bungkusan array tersebut dan memperingatkan bahwa ia menggunakan properti bernama. Objek dengan kunci saudara tambahan tidak dapat dibuka, karena hal tersebut akan membuang atau menduplikasi saudara kandung tersebut.

Setiap rekaman yang dipilih diratakan sebelum kolom dikumpulkan. Catatan bahkan bisa berupa skalar di dalam array; yang menggunakan kolom `value`. Skalar telanjang pada akar dokumen ditolak karena satu string atau nomor tidak mendefinisikan tabel dengan catatan dan bidang.

Memilih catatan dari JSON: array, objek tunggal, dan pembungkus array satu kunci

Tipe JSON hanya bertahan sebagai teks sel. Boolean menjadi `true` dan `false`, angka menggunakan rendering desimalnya, dan null menjadi sel kosong. CSV tidak dapat membedakan null itu dari string kosong, jadi penulis menghitung null dan memperingatkan tentang ambiguitas daripada menyebut hasilnya setara.

Bilangan bulat lebar sudah harus diurai JSON sebelum tahap ini, sehingga literal numerik yang tidak aman mungkin kehilangan presisi. Menempatkan pengenal dalam tanda kutip akan mempertahankan teksnya. String yang mirip rumus menerima tanda kutip tambahan secara default ketika dimulai dengan `=`, `+`, `-`, `@`, tab atau carriage return; angka sebenarnya `-5` tetap berupa angka dan tidak diawali.

Mengapa keluaran CSV tidak dapat mempertahankan tipe JSON

Kolom adalah gabungan kunci yang diratakan dalam urutan yang pertama kali dilihat. Jika satu baris memiliki `a` dan baris lainnya memiliki `b`, output memiliki kolom dan mengisi setiap bidang yang hilang dengan sel kosong. Peringatan melaporkan baris yang tidak rata daripada menggeser nilai di bawah header yang salah.

Kunci objek penyortiran tidak diterapkan pada CSV; aturan penulis adalah kemunculan pertama di seluruh rekaman. Itu membuat contoh stabil untuk input JSON tetap, tetapi ini bukan kontrak skema. Atur kunci sumber dengan sengaja atau pasca-proses header ketika impor hilir memerlukan perintah yang ditentukan.

Meratakan data bersarang — jalur titik seperti address.city, array sebagai kolom yang diindeks atau string yang digabungkan, dan titik di mana CSV tidak dapat menahan bentuknya

Kunci objek bertumpuk digabungkan dengan titik: `address.city`. Array menggunakan pemisah dan indeks numerik yang sama: `tags.0`, `tags.1`. Objek dan array kosong mempertahankan satu sel kosong di jalurnya sendiri dan bukannya menghilang. Ini menghasilkan persegi panjang sambil mengakui bahwa sebuah pohon telah diproyeksikan menjadi nama.

Kunci sumber yang sudah berisi titik bersifat ambigu dengan jalur bersarang. ToolAcre mendeteksi dan memperingatkan tetapi tidak menciptakan sintaksis escape yang tidak dapat dipahami oleh spreadsheet. Array yang dalam atau panjang juga dapat melebihi batas kolom 2,000, di mana konversi menolak daripada menampilkan tabel yang tidak dapat digunakan oleh perangkat lunak spreadsheet biasa.

Contoh praktis: daftar pelanggan dua arah — CSV ke JSON, mengedit bidang bersarang, dan JSON kembali ke CSV dengan sarangnya diratakan

Gunakan `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. Header menyertakan id, address.city, tag.0, tag.1 dan catatan. Baris kedua menerima kosong untuk indeks tag yang tidak ada, dan catatan nolnya tidak dapat dibedakan dari teks kosong.

Catatan pertama diawali dengan apostrof sehingga spreadsheet memperlakukannya sebagai teks. Catatan diakhiri dengan CRLF, bidang yang berisi pembatas, kutipan, atau akhir baris diberi tanda kutip ganda, dan tanda kutip yang disematkan diberi tanda kutip ganda. Memilih titik koma atau tab akan mengubah pembatas; opsional UTF-8 BOM dapat ditambahkan untuk konsumen yang membutuhkannya.

Contoh praktis: array pelanggan bersarang diratakan satu kali menjadi CSV

CSV dengan format salah atau ambigu berada di luar rute ini karena tidak ada CSV yang memasukinya. Pembersih CSV adalah tempat untuk memilih atau mendeteksi dialek dan memperbaiki kutipan. Di sini sumbernya ketat JSON dan keluarannya mengikuti konvensi penulis yang terdokumentasi.

Konverter juga membatasi keluaran pada 100,000 baris dan 2,000 kolom. Array kosong ditolak karena file tanpa header atau baris tidak memiliki bentuk tabel. Batasan tersebut adalah jalur kode yang diberlakukan, bukan janji kinerja, dan artikel tersebut tidak memberikan angka throughput.

Kesimpulan: CSV adalah sebuah tabel, JSON adalah sebuah pohon — dan bagaimana panel Konverter Sintaks berpindah di antara keduanya tanpa mengunggah baris

JSON adalah pohon yang diketik; CSV adalah tabel teks. ToolAcre memilih baris, meratakan jalur, menyatukan kolom, mengutip bidang, dan menetralkan teks berbahaya, tetapi tidak dapat mempertahankan null-versus-empty atau merekonstruksi sarang nanti. Kerugian tersebut bersifat struktural dan bukan formating noise.

Gunakan arah ini ketika keluaran berbentuk spreadsheet adalah artefak yang diinginkan. Jika Anda memerlukan CSV-to-JSON, pilih pembaca yang menanyakan tentang pembatas, header, dan tipe. Menolak kebalikannya lebih aman daripada mengembalikan JSON yang meyakinkan yang dibangun dari tebakan yang belum ditinjau.