Alat pembangun · Penukar sintaks
Piawaian CSV yang tiada: apa yang RFC 4180 meliputi dan perkara yang dibiarkan terbuka
· Latar belakang
csv json format data
CSV mendahului sebarang spesifikasi, dan yang RFC yang menerangkannya adalah bermaklumat dan sengaja sempit. Siaran ini menerangkan perkara yang ditakrifkan RFC 4180, perkara yang tidak diperkatakan dan sebab menukar CSV oleh itu sentiasa menjadi rundingan.
CSV milik siapa yang betul? — dua eksport jadual yang sama, satu dengan koma bertitik dan satu dengan koma, kedua-duanya dipanggil CSV
ToolAcre boleh mengeluarkan keluaran yang dipisahkan koma, koma bertitik atau tab daripada JSON. Ia tidak membaca dua CSV eksport yang bersaing atau mengisytiharkan salah satu betul. CSV adalah tulis sahaja di sini, jadi pilihan pembatas ialah pilihan output yang jelas dan bukannya algoritma pengesanan.
Perbezaan itu menghalang slip fakta biasa. Antara muka yang boleh menulis koma bertitik belum membuktikan ia boleh mengenal pasti koma bertitik dalam fail yang tidak diketahui, mengendalikan perpuluhan setempat atau mentafsir pengepala. Itu adalah tanggungjawab input berasingan yang sengaja dikecualikan.
Dua pilihan pembatas ialah pilihan output, bukan bukti bahawa panel ini membaca mana-mana fail
Repositori tidak mengandungi sumber untuk hamparan awal atau sejarah pangkalan data, jadi artikel itu tidak mencipta kronologi. Ia bermula dengan penulis semasa dan ujiannya: rekod, medan, pembatas, CRLF penamatan dan petikan pelepasan aksara.
Konteks sejarah boleh ditambah kemudian dengan sumber yang disemak. Pelaksanaan penukar adalah bukti untuk perkara yang ditulis oleh produk hari ini, bukan untuk masa konvensyen pertama kali muncul atau sebab vendor menyimpang.
CSV sejarah sebelum RFC 4180 berada di luar bukti repositori
Medan yang mengandungi pembatas, petikan berganda, pemulangan pengangkutan atau suapan baris disertakan dalam petikan berganda dan setiap petikan terbenam digandakan. Ruang kosong mendahului atau mengekori juga dipetik untuk mengelakkan pemangkasan hamparan biasa. Rekod berakhir dengan CRLF dan fail ditamatkan.
Tingkah laku ini mengikut peraturan gaya RFC 4180 yang diuji dalam repositori. Artikel itu mengelak daripada menuntut pematuhan sejagat kerana penulis juga menyokong pembatas alternatif dan menambah pengendalian keselamatan di luar tatabahasa yang sempit.
Penulis menggunakan petikan gaya RFC 4180 dan CRLF tanpa menuntut pematuhan standard penuh
CSV sel tidak mengekalkan JSON jenis. Rentetan null dan kosong kedua-duanya menjadi sel kosong, manakala boolean dan nombor menjadi perwakilan teks. UTF-8 kandungan dilalui dan BOM pilihan boleh diberi awalan untuk pengguna yang memerlukannya.
Tafsiran setempat tidak dibenamkan. Pembatas koma bertitik boleh wujud bersama dengan koma perpuluhan, tetapi penulis tidak memformat semula nombor mengikut tempat atau mengekod jenis tarikh. Aplikasi penerima masih memutuskan cara untuk mentafsir setiap medan.
Pengekodan, jenis dan sempadan tempat kekal jelas dalam penulis ini
Variasi yang dilaksanakan ialah koma, koma bertitik dan tab, serta BOM pilihan. Teks seperti formula bermula dengan `=`, `+`, `-`, `@`, tab atau carriage return diawali dengan apostrof secara lalai supaya hamparan menganggapnya sebagai teks. Pengguna boleh melumpuhkan perlindungan itu dan menerima amaran.
Tiada `sep=` pembayang atau mod pelepasan aksara segaris ke belakang dalam penulis ini. Menyebutnya sebagai pilihan yang dihantar adalah palsu. Petikan tertanam menggunakan penggandaan, sama seperti yang ditegaskan oleh ujian.
Variasi hamparan yang diperhatikan adalah terhad kepada pilihan dan perlindungan yang dilaksanakan di sini
Setiap andaian dalam laluan ini bermula daripada JSON yang dihuraikan: nilai mana yang membekalkan baris, cara bersarang diratakan menjadi lajur bertitik dan kekunci mana yang menjadi pengepala. Tiada andaian dibuat tentang dialek CSV masuk kerana CSV masuk ditolak.
Pembetulan ini membalikkan arah yang diminta buku kerja. Aliran kerja CSV-to-JSON mesti memilih jenis pembatas, petikan, pengepala dan sel dalam alat lain. Ralat ToolAcre menerangkan penolakan itu daripada meneka secara senyap-senyap.
Andaian penukaran digunakan pada JSON-to-CSV sahaja kerana input CSV ditolak
Membaiki CSV yang rosak adalah di luar skop. Petikan rosak, pengekodan bercampur dan pembatas tidak sengaja memerlukan CSV Cleaner atau penghurai lain dengan diagnostik yang jelas. Penukar sintaks menerima teks JSON yang ketat, tidak rosak CSV.
Output masih boleh tidak sesuai untuk sasaran apabila pokok bersarang mencipta lajur bertitik samar-samar atau melebihi 2,000 lajur. Amaran dan penutup mendedahkan kegagalan bentuk jadual tersebut sebelum muat turun.
Bawa pulang: CSV ialah konvensyen, bukan format — dan cara panel penukar Sintaks menukar fail yang dibentuk dengan baik kepada JSON yang anda boleh periksa
Anggap CSV sebagai konvensyen yang pilihannya mesti dapat dilihat. ToolAcre mendokumenkan pilihan outputnya dan menolak sebaliknya yang kurang ditentukan. Itu lebih dipercayai daripada menggunakan satu butang untuk dua kerja yang berbeza secara asasnya.
Periksa pembatas, petikan, CRLF, BOM dan formula yang terlepas daripada sistem penerima. Jika penghuraian input diperlukan, gunakan alat yang bertanya dan bukannya memindahkan konvensyen penulis ke fail yang tidak diketahui.
Semakan penerimaan praktikal membuka fail yang dijana dalam pengguna yang dimaksudkan dan juga memeriksa bait atau teks mentah. Pandangan pengguna menangkap masalah paparan dan import; paparan mentah mengesahkan pembatas, petikan dua kali ganda, CRLF dan BOM pilihan tanpa tafsiran semula hamparan. Uji rentetan seperti formula sebagai teks lengai dan nombor negatif sebagai nombor. Cek berpasangan tersebut mengesahkan kontrak sebenar penulis tanpa mendakwa bahawa setiap program melaksanakan CSV konvensyen secara sama.