Bahasa Melayu

Data & hamparan · CSV Pembersih

Menukar Antara CSV dan JSON: Bentuk, Jenis dan Perkara yang Hilang

· Bagaimana ia berfungsi

csv json format data

Grid CSV segi empat tepat menjadi deretan objek JSON rata manakala setiap nilai kekal sebagai teks
Ilustrasi vektor ToolAcre asal

CSV ialah teks rata dan JSON bersarang, menaip data, jadi menukar antara mereka melibatkan keputusan. Siaran ini menerangkan bentuk JSON biasa untuk data jadual, cara jenis disimpulkan atau tidak dan perkara yang tidak dapat bertahan dalam perjalanan pergi dan balik.

Seorang API mahu JSON, eksportnya ialah CSV dan setiap nombor tiba sebagai rentetan — mengapa kedua-dua format tidak bersetuju tentang jenis

Eksport hamparan boleh menunjukkan 42 tanpa menyatakan sama ada aksara tersebut bermaksud kiraan, kod produk atau pengecam. JSON boleh membezakan nombor daripada rentetan, tetapi sumber CSV tidak dapat membekalkan perbezaan itu. Oleh itu ToolAcre memilih perwakilan konservatif: setiap sel menjadi rentetan JSON, termasuk digit, perkataan yang kelihatan benar dan sel kosong.

Keputusan itu memastikan teks seperti 0012 kekal dan menjadikan penukaran boleh diramal untuk penyepaduan API. Ini juga bermakna kod hiliran mesti menghantar medan di bawah skemanya sendiri sebelum melakukan aritmetik. Merawat fail yang dijana seperti yang telah ditaip semata-mata memindahkan andaian daripada penukar kepada kod aplikasi yang kurang kelihatan.

Bentuk sasaran biasa — susunan objek yang dikunci oleh pengepala, dan sebab itu pengepala perlu bersih dan unik

Laluan menghasilkan tatasusunan peringkat atas dengan satu objek untuk setiap baris data. Sel pengepala menjadi kunci objek, dan nilai diambil dari kedudukan lajur yang sama. Pengepala ketiga kosong menjadi column_3, manakala pengepala kedua bernama id menjadi id_2 dan bukannya menimpa medan id pertama.

Nama yang bersih dan unik berguna, tetapi penukar tidak menggunakan huruf kecil, mengalih huruf atau menggantikan ruang. Ia memangkas pengepala sahaja semasa mengira kunci, kemudian mencipta nama kedudukan atau akhiran berangka jika diperlukan. Jika API memerlukan e-mel pelanggan dan bukannya E-mel Pelanggan, namakan semula lajur itu dengan sengaja sebelum bergantung pada kontrak output.

Bentuk alternatif — tatasusunan dan objek berorientasikan lajur, dan apabila setiap satu lebih sesuai

Garis besar mencadangkan tatasusunan tatasusunan dan objek berorientasikan lajur sebagai sasaran yang boleh dipilih. Mereka adalah reka bentuk data yang munasabah, tetapi antara muka ini tidak menawarkannya. Outputnya sentiasa JSON tatasusunan rekod rata yang dikunci oleh baris CSV pertama, diinden dengan dua ruang untuk pemeriksaan yang boleh dibaca.

Pilihan sempit itu menghilangkan kesamaran tentang tempat tinggal nama lajur dan mengekalkan setiap rekod berbentuk sama. Jika pengguna lain menjangkakan tatasusunan, ubah JSON yang dimuat turun di bawah skema pengguna tersebut. Mendakwa bahawa ToolAcre memilih antara beberapa reka letak akan menerangkan kawalan dan cawangan yang tidak wujud dalam konfigurasi atau kod panel.

Penukar ini mengeluarkan satu bentuk: tatasusunan peringkat atas objek rata

Tiada tekaan jenis berlaku. Teks CSV 42 menjadi "42", palsu menjadi "palsu", dan kosong menjadi "" dan bukannya nol. Ini jelas dalam rekod alat dan pelaksanaan, yang memetakan sel terus kepada sifat rentetan. Laluan tidak memeriksa lajur dan memutuskan bahawa semua nilai bukan kosong adalah angka.

Mengekalkan rentetan juga memisahkan artikel ini daripada perbincangan yang diterbitkan mengenai aplikasi hamparan yang mengubah sifar, tarikh dan pengecam panjang yang diterbitkan. Di sini intinya ialah kontrak sebenar penukar: ia mengelakkan kelas paksaan itu. Pengguna tetap bertanggungjawab untuk menghuraikan kuantiti yang diketahui dan membiarkan pengecam tidak disentuh.

Jenis dikekalkan sebagai teks; ToolAcre tidak melakukan inferens

Dalam arah sebaliknya, ToolAcre menerima tatasusunan JSON peringkat atas yang itemnya adalah objek. Ia membina lajur daripada penyatuan kunci merentas setiap objek, dalam susunan pertama dilihat, jadi medan yang diperkenalkan oleh rekod kemudian tidak hilang. Sifat yang tiada, batal dan tidak ditentukan menjadi sel CSV kosong.

Objek atau tatasusunan yang disimpan di dalam harta disiri sebagai teks JSON di dalam satu sel itu. Ini mengekalkan perwakilan teks tetapi tidak mengubah struktur bersarang menjadi lajur atau baris tambahan. Punca bukan tatasusunan dan tatasusunan yang mengandungi nilai primitif ditolak kerana kedua-duanya tidak sepadan dengan model jadual yang disokong oleh laluan ini.

JSON-to-CSV menerima tatasusunan objek dan menulis nilai bersarang sebagai teks JSON

Pertimbangkan nama, aktif, kiraan diikuti dengan Ada, benar,007. Hasil JSON ialah tatasusunan yang mengandungi objek dengan nama "Ada", aktif "true" dan kiraan "007". Menukarkan tatasusunan objek rata itu kembali menghasilkan tiga sel teks yang sama kerana tiada inferens jenis mengalih keluar sifar atau menukar perkataan yang kelihatan boolean.

Sekarang tambahkan pengepala kosong sebelum nilai lain. Kekunci JSON menjadi lajur_4, jadi data kekal boleh dicapai walaupun nama sumber tiada. Tambah sel tambahan melebihi lebar pengepala, walau bagaimanapun, dan pemuat memberi amaran tentang baris yang compang-camping; sel lebihan itu tidak mempunyai kunci dan tiada dari JSON.

Perkara yang tidak dilindungi ini — JSON bersarang dalam, pengesahan skema dan penstriman dokumen JSON yang sangat besar

Laluan itu bukan pengesah skema, perata rekursif atau pemproses JSON penstriman. Ia menerima satu bentuk yang didokumenkan dan melaporkan JSON yang tidak sah atau akar yang tidak disokong dengan ralat tertentu. Rekod bersarang dalam memerlukan pemetaan yang direka bentuk di sekitar domain mereka dan bukannya janji automatik bahawa tanda baca dalam kunci mencipta struktur.

Semakan fail input membenarkan fail sehingga 50 MB yang dikonfigurasikan dan penghuraian CSV berlaku dalam pekerja. Fakta tersebut tidak mewujudkan penstriman: teks fail dan baris yang lengkap masih diwujudkan untuk penukaran. Untuk aliran kerja JSON yang sangat besar, gunakan sistem yang pelaksanaannya secara eksplisit mendokumenkan penghuraian tambahan dan bukannya membuat kesimpulan di sini.

Pengesahan skema, tatasusunan primitif dan punca bukan tatasusunan berada di luar bentuk yang diterima

Penukaran ialah set pilihan yang boleh dilihat: baris pertama sebagai kunci, objek rata sebagai rekod dan rentetan sebagai nilai. ToolAcre menjadikan pilihan tersebut stabil dan bukannya meneka daripada sampel. Pengepala kosong dan berulang menerima kunci penentu, manakala input lusuh muncul sebelum nilai lebihan yang tidak dinamakan boleh hilang tanpa disedari.

Gunakan pratonton untuk mengesahkan pembatas dan bentuk baris, selesaikan amaran, kemudian muat turun atau salin JSON. Fail yang dihasilkan sesuai untuk kod yang mengetahui skemanya sendiri. Ia dengan sengaja bukan pengganti untuk skema itu, dan kekangannya adalah yang melindungi ID teks semasa perubahan format.