JSON, YAML, CSV: Bila Nak Guna Yang Mana dan Cara Menukar
Anda memuat turun set data dan ia dalam format CSV. API anda mengembalikan JSON. Fail konfigurasi anda dalam format YAML. Rakan sekerja menghantar fail JSON dan meminta ia sebagai hamparan. Rakan sekerja lain memberi anda konfigurasi YAML dan anda memerlukannya sebagai JSON untuk alat yang berbeza.
Penukaran format data adalah salah satu tugas yang kelihatan remeh sehingga anda benar-benar melakukannya. Memahami bila menggunakan format mana, dan cara bergerak antara mereka, menjimatkan masa yang nyata.
Tiga Format Sekilas Pandang
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Apa itu: Format teks untuk data berstruktur yang menyokong objek (pasangan kunci-nilai), tatasusunan (senarai berurutan), rentetan, nombor, boolean, dan null.
Kelebihan: Boleh dibaca mesin, disokong meluas dalam setiap bahasa pengaturcaraan, mengendalikan data bersarang secara semula jadi, sintaks ketat mencegah kekaburan.
Kelemahan: Verbose (banyak kurungan, kurungan siku, dan petikan), tidak semestinya mudah dibaca manusia seperti YAML, tiada sokongan untuk komen.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Apa itu: Format pensirian data mesra manusia yang menggunakan indentasi sebagai ganti kurungan dan kurungan siku. Ia adalah superset JSON, bermakna JSON yang sah juga merupakan YAML yang sah.
Kelebihan: Sangat mudah dibaca, menyokong komen, kurang bunyi visual, sangat sesuai untuk fail konfigurasi.
Kelemahan: Sensitif kepada indentasi (mudah rosak dengan jarak yang salah), beberapa tingkah laku penghuraian yang mengejutkan, lebih perlahan untuk dihurai berbanding JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Apa itu: Format teks rata di mana setiap baris adalah satu baris dan nilai dalam setiap baris dipisahkan oleh koma (atau kadang-kala titik koma atau tab).
Kelebihan: Universal (setiap hamparan, pangkalan data, dan alat data menyokongnya), padat untuk data jadual, mudah dibaca dan dicipta.
Kelemahan: Tiada sokongan untuk data bersarang, tiada jenis data (semua adalah rentetan), tiada standard untuk aksara khas, terhad kepada jadual rata.
Tahukah anda? YAML secara teknikal adalah superset JSON. Ini bermakna mana-mana dokumen JSON yang sah secara automatik merupakan dokumen YAML yang sah. Anda boleh menampal JSON ke dalam penghurai YAML dan ia akan berfungsi. Sebaliknya tidak benar — ciri-ciri YAML (komen, sauh, rentetan berbilang baris) tidak mempunyai padanan JSON.
Bila Menggunakan Yang Mana
| Kes Penggunaan | Format Terbaik | Kenapa |
|---|---|---|
| Permintaan dan respons API | JSON | Standard industri, setiap bahasa mempunyai sokongan asli |
| Fail konfigurasi | YAML | Mudah dibaca manusia, menyokong komen untuk dokumentasi |
| Data hamparan | CSV | Dibuka terus dalam Excel, Google Sheets, dsb. |
| Eksport pangkalan data | CSV | Data jadual rata dipetakan terus kepada baris dan lajur |
| Data bersarang yang kompleks | JSON atau YAML | CSV tidak boleh mewakili bersarang |
| Pertukaran data antara sistem | JSON | Penghuraian tidak samar-samar, spesifikasi ketat |
| Konfigurasi yang diedit manusia | YAML | Lebih mudah dibaca dan diedit dengan tangan |
| Senarai data mudah | CSV | Ringan, tiada overhed |
Menukar Antara Format
JSON ke YAML
Ini adalah penukaran konfigurasi yang paling biasa. Anda mempunyai konfigurasi JSON dari satu alat dan memerlukan YAML untuk alat yang lain. Penukaran adalah mudah kerana YAML menyokong semua yang JSON lakukan.
{"server": {"host": "0.0.0.0", "port": 8080}}
Menjadi:
server:
host: 0.0.0.0
port: 8080
YAML ke JSON
Pergi dari YAML ke JSON juga mudah, tetapi anda kehilangan komen (JSON tidak menyokongnya) dan hasilnya lebih verbose.
JSON ke CSV
Ini berfungsi dengan baik untuk tatasusunan JSON rata (tatasusunan objek dengan kunci yang sama). Setiap objek menjadi satu baris, dan setiap kunci menjadi pengepala lajur.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Menjadi:
name,age
Alice,30
Bob,25
Amaran Penukaran JSON-ke-CSV rosak apabila JSON mengandungi objek bersarang atau tatasusunan. CSV adalah rata — ia tidak ada cara untuk mewakili tatasusunan "kemahiran" atau objek "alamat" yang bersarang. Data bersarang mesti sama ada diratakan (address.city, address.country sebagai lajur berasingan) atau disiri sebagai rentetan dalam sel CSV.
CSV ke JSON
Setiap baris menjadi objek, dengan pengepala lajur sebagai kunci. Ini bersih untuk data jadual mudah.
CSV ke YAML
Kurang biasa, tetapi mengikut logik yang sama: setiap baris menjadi pemetaan YAML, dan keseluruhan fail menjadi urutan YAML.
Perangkap Biasa
Isu Pengekodan CSV
Fail CSV boleh menggunakan pengekodan aksara yang berbeza (UTF-8, Latin-1, Windows-1252). Jika anda membuka CSV dan melihat aksara bercelaru seperti "München" dan bukannya "München," ia adalah ketidakpadanan pengekodan. Sentiasa gunakan UTF-8 apabila boleh.
Kekeliruan Pemisah CSV
Tidak semua CSV menggunakan koma. CSV Eropah sering menggunakan titik koma kerana koma digunakan sebagai pemisah perpuluhan dalam banyak format nombor Eropah. Nilai yang dipisahkan tab (TSV) adalah varian biasa yang lain.
Ralat Indentasi YAML
YAML menggunakan indentasi (ruang, bukan tab) untuk mentakrifkan struktur. Indentasi yang tidak konsisten, atau mencampur tab dan ruang, menghasilkan ralat penghuraian atau salah tafsir senyap. Gunakan tepat 2 ruang setiap tahap indentasi dan konfigurasikan editor anda untuk memasukkan ruang dan bukannya tab.
Amaran Dalam YAML, rentetan no dihurai sebagai boolean false, dan yes dihurai sebagai true. Rentetan 1.0 dihurai sebagai nombor. Jika anda bermaksud rentetan literal "no," "yes," atau "1.0," anda mesti memetiknya: "no", "yes", "1.0". Ini adalah salah satu gotcha YAML yang paling terkenal.
Koma Trailing JSON
JSON tidak membenarkan koma trailing. Ini sah dalam JavaScript tetapi tidak sah dalam JSON:
{"name": "Alice", "age": 30,} // JSON tidak sah: koma trailing
Prestasi Fail Besar
Untuk set data yang sangat besar (berjuta-juta baris), CSV lebih cekap berbanding JSON atau YAML kerana ia mempunyai overhed minimum setiap rekod. JSON menambah kurungan dan petikan untuk setiap nilai, yang meningkatkan saiz fail dengan ketara untuk data jadual besar.
Alat Praktikal untuk Penukaran
Untuk penukaran sekali-sekala yang cepat, alat berasaskan pelayar adalah pilihan terpantas. Anda menampal atau memuat naik data anda, memilih format sasaran, dan mendapat hasilnya dengan serta-merta.
Petua Tukar antara format JSON, YAML, dan CSV dengan serta-merta: Cara Menukar Format Data. Tampalkan data anda, pilih format sasaran, dan salin atau muat turun hasilnya.
Untuk bekerja dengan JSON khususnya, pemformat yang mengesahkan dan mencetak JSON anda dengan cantik adalah sangat berharga:
- Pemformat JSON — sahkan, formatkan, dan minifikasikan JSON
- Penukar JSON ke CSV — tukar tatasusunan JSON ke CSV
- Penukar YAML-JSON — tukar antara YAML dan JSON
- Pemapar CSV — lihat dan terokai fail CSV
Tukar data anda sekarang:
Semua alat adalah percuma dan berfungsi terus dalam pelayar anda.