Langkau ke kandungan

Pengubah CSV ke JSON - Alat Pengubah Fail Percuma Dalam Talian

Tukar CSV ke JSON dan JSON ke CSV serta-merta dalam pelayar anda. Penukaran data yang selamat dan pantas dengan pratonton dan muat turun. Tiada muat naik diperlukan.

Pengubah Fail CSV/JSON

Tukar antara format CSV dan JSON dengan mudah. Muat naik fail anda, pratonton data, dan muat turun hasil yang ditukar.

Pengubah CSV ke JSON

Pengubah JSON ke CSV

Kalkulator Pemuatan...
📚

Dokumentasi

Apakah penukar CSV kepada JSON?

Penukar CSV kepada JSON ialah alat yang menukar data daripada format CSV (Nilai Dipisahkan Koma) kepada format JSON (Notasi Objek JavaScript), atau sebaliknya. Penukar ini berjalan sepenuhnya dalam pelayar web. Fail yang dimuat naik tidak pernah dihantar ke pelayan, jadi data kekal pada peranti pengguna.

CSV ialah format teks biasa yang digunakan untuk menyimpan jadual, seperti hamparan yang dieksport daripada Excel atau Google Sheets. JSON ialah format teks yang dibina daripada pasangan kunci-nilai dan digunakan secara meluas untuk memindahkan data antara aplikasi web dan API. Oleh sebab kedua-dua format menyusun data secara berbeza, penukaran antara kedua-duanya memerlukan set peraturan yang ditetapkan, seperti yang diterangkan di bawah.

Cara menukar CSV kepada JSON

  1. Klik "Muat Naik Fail CSV" dan pilih fail .csv daripada peranti.
  2. Alat ini memaparkan pratonton kandungan mentah fail.
  3. Klik "Tukar kepada JSON". Alat ini membaca baris pertama sebagai pengepala lajur dan menukar setiap baris lain menjadi satu objek JSON.
  4. Hasilnya muncul dalam pratonton output, dengan pemformatan inden.
  5. Klik "Muat Turun JSON" untuk menyimpannya sebagai fail .json, atau "Salin JSON" untuk menyalin teks tersebut.

Cara menukar JSON kepada CSV

  1. Klik "Muat Naik Fail JSON" dan pilih fail .json. Fail tersebut mesti mengandungi tatasusunan objek JSON, contohnya [{"Name":"Ann"},{"Name":"Bo"}].
  2. Alat ini memaparkan pratonton teks JSON mentah.
  3. Klik "Tukar kepada CSV". Alat ini mengumpulkan setiap kunci yang digunakan merentas semua objek dan menukar setiap kunci menjadi satu lajur.
  4. Hasilnya muncul dalam pratonton output sebagai teks CSV.
  5. Klik "Muat Turun CSV" untuk menyimpannya sebagai fail .csv, atau "Salin CSV" untuk menyalin teks tersebut.

Tiada had muat naik yang dikuatkuasakan oleh pelayan kerana tiada data yang keluar dari pelayar. Fail yang sangat besar masih boleh memperlahankan tab pelayar, kerana keseluruhan fail disimpan dalam memori semasa penukaran.

Peraturan penukaran CSV kepada JSON

Penukar membaca baris pertama fail sebagai nama lajur. Setiap baris berikutnya menjadi satu objek JSON, dengan nama lajur sebagai kunci. Baris yang mempunyai lebih banyak nilai daripada jumlah pengepala akan mendapat kunci tambahan yang dinamakan berdasarkan kedudukan mutlaknya dalam baris. Jadi, dengan 3 pengepala, nilai keempat menggunakan kunci field_4, nilai kelima field_5, dan seterusnya; ini bermakna tiada data digugurkan. Baris yang mempunyai lebih sedikit nilai akan mendapat rentetan kosong bagi kunci yang tiada. Jika dua pengepala mempunyai nama yang sama, nama kedua ditukar dengan akhiran; maka a, a menjadi kunci a dan a_2.

Penukar mematuhi peraturan CSV yang ditakrifkan dalam RFC 4180, iaitu piawaian teknikal bagi format tersebut. Koma di dalam medan hanya dianggap sebagai nilai dalam medan itu, bukan pemisah lajur, jika medan tersebut diapit tanda petik ganda, contohnya "Smith, John". Pemisah baris di dalam tanda petik dikekalkan sebagai sebahagian daripada nilai dan bukannya dianggap sebagai baris baharu. Dua tanda petik ganda di dalam medan yang dipetik mewakili satu aksara tanda petik literal.

Hanya koma yang dikenali sebagai pemisah lajur; alat ini tidak mengesan atau menyokong titik koma, tab atau pemisah lain.

Setiap nilai diperiksa dan ditukar kepada suatu jenis:

  • Nilai yang ditulis sebagai nombor biasa, seperti 42 atau -3.5, menjadi nombor JSON.
  • Teks true atau false, tanpa mengira huruf besar kecil, menjadi nilai boolean JSON.
  • Selain itu kekal sebagai rentetan JSON, termasuk sel kosong yang menjadi rentetan kosong.
  • Nombor dengan sifar di hadapan, seperti 00512, kekal sebagai rentetan kerana sifar di hadapan sering mempunyai makna, seperti dalam kod ZIP atau nombor pengenalan.
  • Nombor hanya diterima jika apabila ditulis semula, hasilnya memberikan teks yang sama tepat. Integer panjang yang melebihi 9,007,199,254,740,991, iaitu nombor bulat terbesar yang dapat disimpan dengan tepat oleh nombor JavaScript, biasanya gagal dalam semakan itu dan kekal sebagai rentetan supaya tiada digit hilang.
  • Nilai yang telah diapit tanda petik dalam fail sentiasa dikekalkan sebagai rentetan, walaupun kelihatan seperti nombor, kerana tanda petik dianggap sebagai penandaan oleh pengarang bahawa nilai itu ialah teks.

Baris kosong dalam fail dilangkau dan tidak menghasilkan objek kosong.

Peraturan penukaran JSON kepada CSV

Penukar melihat setiap objek dalam tatasusunan dan mengumpulkan keseluruhan set kunci yang digunakan dalam semua objek tersebut. Kunci itu menjadi pengepala lajur CSV mengikut urutan pertama kali ditemui. Jika satu objek tiada kunci yang terdapat pada objek lain, selnya dibiarkan kosong dan bukannya menghasilkan ralat.

Penukaran JSON kepada CSV tidak meratakan objek bersarang menjadi lajur berasingan. Nilai yang merupakan objek atau tatasusunan ditulis semula sebagai teks JSON dalam satu sel, jadi {"b": 1} menjadi sel {"b":1} dan [1, 2] menjadi sel [1,2]. Tiada data yang hilang, tetapi bahagian bersarang kekal dalam satu lajur dan bukannya dipecahkan. Lakukan perataan JSON bersarang secara manual terlebih dahulu jika setiap bahagiannya memerlukan lajur sendiri.

Nilai null dan kunci yang terdapat pada satu objek tetapi tiada pada objek lain kedua-duanya menghasilkan sel kosong.

Nilai sel yang mengandungi koma, tanda petik atau pemisah baris diapit tanda petik ganda dalam output, dan sebarang tanda petik di dalamnya digandakan, selaras dengan peraturan pelepasan CSV di atas.

JSON input mesti berupa tatasusunan dan setiap item di dalamnya mesti berupa objek. Nombor, rentetan, null atau tatasusunan bersarang yang menggantikan objek akan menghasilkan ralat "JSON mesti berupa tatasusunan objek". Tatasusunan tanpa sebarang item akan menghasilkan ralat "Tatasusunan JSON kosong. Tambahkan sekurang-kurangnya satu objek untuk ditukar." Fail yang dimuat naik tanpa sebarang kandungan akan menghasilkan ralat "Fail yang dimuat naik kosong."

Contoh pengiraan

Fail CSV asal:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4

Penukaran kepada JSON menghasilkan:

1[
2  {
3    "Name": "Ann Lee",
4    "Age": 29,
5    "Member": true
6  },
7  {
8    "Name": "Bo, Jr.",
9    "Age": 7,
10    "Member": false
11  }
12]
13

Perhatikan bahawa "Bo, Jr." mengekalkan komanya kerana medan itu dipetik dalam fail asal, manakala Age dan Member masing-masing menjadi nombor dan boolean.

Penukaran JSON yang sama kembali kepada CSV, dengan baris tambahan yang tiada nilai Age, menghasilkan:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5

Nilai Age yang hilang menjadi sel kosong, dan koma dalam "Bo, Jr." menyebabkan medan itu dipetik semula semasa output dihasilkan.

Kegunaan umum

  • Analisis data: menukar eksport CSV daripada hamparan atau alat analitik kepada JSON supaya dapat diproses dengan JavaScript, kemudian menukar hasilnya kembali kepada CSV untuk laporan.
  • Pengujian API: pembangun yang membina API untuk menerima muat naik CSV boleh menukar fail sampel kepada JSON bagi menyemak sama ada penghurai menghasilkan objek yang dijangka.
  • Penghijrahan data: memindahkan rekod daripada sistem yang mengeksport CSV kepada sistem yang hanya menerima JSON, atau sebaliknya.
  • Pemeriksaan pantas: menukar fail JSON kepada CSV berbentuk jadual supaya lebih mudah dibaca, atau sebaliknya.

Pustaka pengaturcaraan menawarkan penukaran yang sama untuk kerja yang lebih besar atau berulang, seperti modul csv dan json dalam Python, atau pandas. Alat baris perintah seperti csvkit dan jq mengendalikan penukaran dan penapisan dari terminal. Pilihan tersebut sesuai untuk pemprosesan kelompok; alat pelayar ini sesuai untuk fail sekali guna tanpa perlu memasang apa-apa.

Soalan lazim

Adakah fail yang dimuat naik dihantar ke pelayan? Tidak. Penukaran berjalan dalam JavaScript di dalam tab pelayar. Fail dibaca daripada peranti setempat dan tidak pernah dihantar.

Adakah penukar menyokong pemisah selain koma, seperti titik koma atau tab? Tidak. Versi semasa hanya membaca nilai yang dipisahkan koma. Fail yang menggunakan pembatas lain perlu ditukar kepada format dipisahkan koma terlebih dahulu, contohnya dengan menggantikan pembatas tersebut dalam penyunting teks.

Mengapakah nombor seperti 00512 kekal sebagai rentetan teks dalam output JSON? Sifar di hadapan biasanya mempunyai makna, seperti dalam kod ZIP, jadi penukar mengekalkan nilai itu sebagai rentetan dan bukannya menukarnya kepada nombor 512, yang akan menggugurkan sifar tersebut.

Apakah yang berlaku jika JSON yang ditukar mengandungi objek bersarang? Objek bersarang ditulis sebagai teks JSON dalam satu sel, contohnya {"b":1}. Data kekal, tetapi tidak dipecahkan kepada lajur berasingan. Lakukan perataan data bersarang terlebih dahulu jika setiap medan memerlukan lajurnya sendiri.

Bagaimana jika JSON saya bukan tatasusunan objek? Alat ini memaparkan ralat dan tidak menukar apa-apa. Input mesti berupa tatasusunan JSON yang setiap itemnya ialah objek, contohnya [{"a":1},{"a":2}].

Adakah baris pertama fail CSV sentiasa perlu menjadi baris pengepala? Ya. Penukar sentiasa menganggap baris pertama sebagai nama lajur. Fail tanpa baris pengepala akan menyebabkan baris data pertamanya tersalah dibaca sebagai pengepala.

Rujukan

  1. Shafranovich, Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180, IETF, Oktober 2005. https://www.rfc-editor.org/rfc/rfc4180
  2. Bray, T., penyunting. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259, IETF, Disember 2017. https://www.rfc-editor.org/rfc/rfc8259
  3. "Working with JSON." MDN Web Docs, Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON