Bahasa Melayu

Alat pembangun · Penukar sintaks

CSV hingga JSON dan JSON hingga CSV: pengepala, nilai rentetan dan merata

· Bagaimana ia berfungsi

json csv format data

Pokok JSON bersarang meratakan sehala ke dalam lajur CSV bertitik
Ilustrasi vektor ToolAcre asal

CSV adalah rata, tanpa jenis dan samar-samar tentang pembatasnya sendiri, manakala JSON bersarang dan ditaip. Siaran ini menunjukkan cara penukar memetakan baris ke objek dan belakang, dan tempat maklumat hilang dalam setiap arah.

Setiap nombor kembali dalam petikan — eksport CSV ditukar kepada JSON dengan 42 menjadi "42" dan kod ZIP mengekalkan sifar pendahuluannya untuk sekali

Buku kerja meminta contoh CSV-to-JSON, tetapi ToolAcre tidak pernah membaca CSV. Enjin mengiklankan tepat sembilan pasang terarah, dan tiada satu pun bermula dengan CSV. Membaca fail memerlukan pilihan tentang pembatas, petikan, kehadiran pengepala dan jenis sel; panel ini enggan membuat empat tekaan senyap. Oleh itu, artikel yang diperbetulkan mendokumenkan arah JSON-ke-CSV yang dihantar.

Keputusan sehala itu kelihatan dalam kedua-dua antara muka dan ralat. CSV muncul sebagai sasaran, bukan sumber, dan cubaan sebaliknya mengembalikan `UNSUPPORTED_CONVERSION` dengan nasihat untuk menggunakan alat yang bertanya tentang dialek dan jenis. Tajuk yang mencadangkan kedua-dua arah akan salah nyatakan produk walaupun topik umum adalah biasa di tempat lain.

CSV tidak dibaca di sini: mulakan dengan laluan JSON-to-CSV yang sebenarnya dihantar oleh alat

Tatasusunan JSON akar membekalkan baris. Objek biasa menjadi satu baris. Objek yang satu-satunya kuncinya memegang tatasusunan membuka balutan tatasusunan itu dan memberi amaran bahawa ia menggunakan harta yang dinamakan. Objek dengan kunci adik beradik tambahan tidak boleh dibuka, kerana berbuat demikian akan membuang atau menduplikasi adik beradik tersebut.

Setiap rekod yang dipilih diratakan sebelum lajur dikumpulkan. Rekod juga boleh menjadi skalar dalam tatasusunan; mereka menggunakan lajur `value`. Skalar kosong pada akar dokumen ditolak kerana satu rentetan atau nombor tidak mentakrifkan jadual dengan rekod dan medan.

Memilih rekod daripada JSON: tatasusunan, objek tunggal dan pembungkus tatasusunan satu kunci

JSON jenis bertahan sahaja sebagai teks sel. Boolean menjadi `true` dan `false`, nombor menggunakan pemaparan perpuluhannya dan null menjadi sel kosong. CSV tidak dapat membezakan null itu daripada rentetan kosong, jadi penulis mengira batal dan memberi amaran tentang kekaburan daripada memanggil hasil yang setara.

Integer lebar sudah pun tertakluk kepada penghuraian JSON sebelum peringkat ini, jadi literal angka yang tidak selamat mungkin telah kehilangan ketepatan. Meletakkan pengecam dalam petikan mengekalkan teksnya. Rentetan seperti formula menerima tanda kutip tambahan secara lalai apabila ia bermula dengan `=`, `+`, `-`, `@`, tab atau pemulangan pengangkutan; angka sebenar `-5` kekal sebagai nombor dan bukan awalan.

Mengapa CSV output tidak boleh mengekalkan JSON jenis

Lajur ialah gabungan kunci yang diratakan dalam susunan yang dilihat pertama kali. Jika satu baris mempunyai `a` dan satu lagi mempunyai `b`, output mempunyai kedua-dua lajur dan pad setiap medan yang hilang dengan sel kosong. Amaran melaporkan baris compang-camping dan bukannya menukar nilai di bawah pengepala yang salah.

Isih kekunci objek tidak digunakan pada CSV; peraturan penulis adalah penampilan pertama di seluruh rekod. Itu menjadikan contoh stabil untuk input JSON tetap, tetapi ia bukan kontrak skema. Susun kunci sumber secara sengaja atau pasca proses pengepala apabila import hiliran memerlukan pesanan yang ditetapkan.

Meratakan data bersarang — laluan titik seperti address.city, tatasusunan sebagai lajur diindeks atau rentetan bercantum dan titik di mana CSV tidak boleh memegang bentuk

Kekunci objek bersarang bercantum dengan titik: `address.city`. Tatasusunan menggunakan pemisah dan indeks berangka yang sama: `tags.0`, `tags.1`. Objek dan tatasusunan kosong mengekalkan satu sel kosong di laluannya sendiri dan bukannya hilang. Ini menghasilkan segi empat tepat sambil mengakui bahawa pokok telah diunjurkan menjadi nama.

Kunci sumber yang sudah mengandungi titik adalah samar-samar dengan laluan bersarang. ToolAcre mengesan dan memberi amaran tetapi tidak mencipta sintaks pelepasan aksara yang hamparan tidak akan faham. Tatasusunan dalam atau panjang juga boleh melebihi had lajur 2,000, di mana penukaran menolak dan bukannya memancarkan jadual yang tidak boleh digunakan oleh perisian hamparan biasa.

Contoh yang berjaya: pelanggan menyenaraikan kedua-dua cara — CSV hingga JSON, mengedit medan bersarang dan JSON kembali ke CSV dengan sarang diratakan

Gunakan `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. Pengepala termasuk id, address.city, tag.0, tag.1 dan nota. Baris kedua menerima kosong untuk indeks teg yang tidak hadir, dan nota nolnya tidak dapat dibezakan daripada teks kosong.

Nota pertama diawali dengan apostrof supaya hamparan menganggapnya sebagai teks. Rekod berakhir dengan CRLF, medan yang mengandungi pembatas, petikan atau penghujung baris adalah petikan dua kali dan petikan terbenam digandakan. Memilih koma bertitik atau tab menukar pembatas; pilihan UTF-8 BOM boleh ditambah untuk pengguna yang memerlukannya.

Contoh berfungsi: tatasusunan pelanggan bersarang diratakan sekali menjadi CSV

CSV yang cacat atau dikodkan secara samar-samar berada di luar laluan ini kerana tiada CSV memasukinya. CSV Cleaner ialah tempat untuk memilih atau mengesan dialek dan petikan pembaikan. Di sini sumbernya adalah ketat JSON dan output mengikut konvensyen penulis yang didokumenkan.

Penukar juga mengehadkan output pada 100,000 baris dan 2,000 lajur. Tatasusunan kosong ditolak kerana fail tanpa pengepala mahupun baris tidak membawa bentuk jadual. Had tersebut ialah laluan kod yang dikuatkuasakan, bukan janji prestasi dan artikel itu tidak mencipta angka daya pengeluaran.

Bawa pulang: CSV ialah jadual, JSON ialah pokok — dan cara panel penukar Sintaks bergerak di antara mereka tanpa memuat naik baris

JSON ialah pokok bertaip; CSV ialah jadual teks. ToolAcre memilih baris, meratakan laluan, lajur kesatuan, medan petikan dan meneutralkan teks berbahaya, tetapi ia tidak boleh mengekalkan null-versus-kosong atau membina semula sarang kemudian. Kerugian tersebut adalah berstruktur dan bukannya memformat bunyi.

Gunakan arah ini apabila output berbentuk hamparan ialah artifak yang dimaksudkan. Jika anda memerlukan CSV-to-JSON, pilih pembaca yang bertanya tentang pembatas, pengepala dan jenis. Menolak sebaliknya adalah lebih selamat daripada mengembalikan JSON yang meyakinkan yang dibina daripada tekaan yang belum disemak.