Sama ada anda mengkonfigurasi aplikasi web, bertukar data antara perkhidmatan, menganalisis eksport hamparan, atau membaca respons API, anda akan menemui data yang disimpan dalam format teks berstruktur. Empat yang paling biasa ialah JSON, YAML, CSV, dan XML.
Setiap format direka dengan matlamat yang berbeza, dan memilih yang tepat bergantung pada kes penggunaan anda. Artikel ini menerangkan apa setiap format, bagaimana rupanya, bila menggunakannya, dan bagaimana mereka dibandingkan.
JSON — JavaScript Object Notation
JSON telah menjadi format pertukaran data yang dominan di web. Walaupun namanya, ia bebas daripada bahasa pengaturcaraan dan digunakan di mana-mana.
Contoh sintaks:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Ciri utama:
- Pasangan kunci-nilai dengan sintaks yang bersih dan mudah dibaca
- Menyokong rentetan, nombor, boolean, tatasusunan, objek, dan null
- Tiada ulasan dibenarkan dalam JSON standard
- Sintaks yang ketat — koma di belakang dan tanda petikan tunggal adalah ralat
Kes penggunaan biasa: REST API, fail konfigurasi (package.json, tsconfig.json), pangkalan data NoSQL (MongoDB), pertukaran data antara frontend dan backend.
Baik untuk diketahui. Sintaks ketat JSON adalah kekuatan dan kelemahan sekaligus. Ia menjadikan penguraian boleh dipercayai dan tidak ambiguiti, tetapi juga bermakna satu koma yang hilang atau koma tambahan akan merosakkan keseluruhan fail.
YAML — YAML Ain't Markup Language
YAML direka untuk menjadi format pengsirialan data yang paling mudah dibaca manusia. Ia menggunakan indentasi dan bukannya kurungan dan sangat popular untuk fail konfigurasi.
Contoh sintaks:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Ciri utama:
- Struktur berasaskan indentasi (tiada kurungan segi empat atau kurungan kerinting)
- Menyokong ulasan dengan
# - Menyokong semua jenis data JSON serta lebih (tarikh, rentetan berbilang baris)
- Sensitif kepada ruang putih — indentasi yang salah merosakkan fail
Kes penggunaan biasa: Fail Docker Compose, manifes Kubernetes, saluran paip CI/CD (GitHub Actions, GitLab CI), buku main Ansible, konfigurasi Hugo/Jekyll.
YAML ialah superset JSON, bermakna mana-mana dokumen JSON yang sah juga merupakan YAML yang sah. Walau bagaimanapun, kefleksibelan YAML boleh menjadi pedang bermata dua — paksaan jenis tersiratnya (contohnya, yes ditafsirkan sebagai boolean true, atau 3.10 menjadi 3.1) telah menyebabkan banyak pepijat halus.
CSV — Comma-Separated Values
CSV ialah format data berstruktur yang paling mudah. Ia menyimpan data jadual sebagai teks biasa, dengan setiap baris adalah satu rekod dan nilai dipisahkan oleh koma (atau kadangkala koma bertitik, tab, atau pembatas lain).
Contoh sintaks:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Ciri utama:
- Sangat mudah — hanya teks dengan pembatas
- Tiada jenis data — semuanya ialah rentetan
- Tiada cara standard untuk mewakili data bersarang
- Tiada standard universal rasmi (RFC 4180 wujud tetapi tidak diikuti secara universal)
- Saiz fail sangat kecil
Kes penggunaan biasa: Eksport hamparan, import/eksport pangkalan data, analisis data (pandas, R), pertukaran data mudah, fail log.
Kesederhanaan CSV ialah kekuatan terbesar dan had terbesarnya. Ia sempurna untuk data jadual rata tetapi tidak boleh mewakili struktur berhierarki. Kes-kes tepi (koma dalam nilai, medan berbilang baris, isu pengekodan) menjadikan penguraian lebih kompleks daripada yang kelihatan.
XML — Extensible Markup Language
XML ialah format pertukaran data yang dominan sebelum JSON mengambil alih. Ia menggunakan sintaks berasaskan tag yang serupa dengan HTML dan menyokong ciri-ciri kompleks seperti skema, ruang nama, dan transformasi.
Contoh sintaks:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Ciri utama:
- Struktur berasaskan tag dengan tag pembuka dan penutup
- Menyokong atribut, ruang nama, skema (XSD), dan transformasi (XSLT)
- Menyokong ulasan
- Sangat panjang lebar berbanding format lain
- Standard yang ditakrifkan dengan sangat baik dengan pengesahan yang ketat
Kes penggunaan biasa: Perkhidmatan web SOAP, integrasi perusahaan, format dokumen (DOCX, SVG, RSS), fail konfigurasi dalam ekosistem Java/.NET, pertukaran data kerajaan dan kewangan.
XML lebih panjang lebar daripada JSON atau YAML, tetapi keupayaan pengesahan skemanya menjadikannya sangat berharga dalam konteks di mana integriti data dan kontrak formal antara sistem adalah kritikal.
Perbandingan Sebelah Menyebelah
| Ciri | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Kebolehbacaan | Baik | Cemerlang | Baik (jadual) | Sederhana |
| Kepanjangan | Rendah | Rendah | Sangat rendah | Tinggi |
| Ulasan | Tidak | Ya | Tidak | Ya |
| Data bersarang | Ya | Ya | Tidak | Ya |
| Jenis data | Asas | Kaya | Tiada (semua rentetan) | Melalui skema |
| Pengesahan skema | JSON Schema | Tiada standard | Tidak | XSD |
| Saiz fail | Kecil | Kecil | Terkecil | Besar |
| Kelajuan penguraian | Pantas | Sederhana | Pantas | Sederhana |
| Domain utama | Web API | Konfigurasi DevOps | Data/hamparan | Perusahaan |
Bila Menggunakan Yang Mana
- Pilih JSON apabila membina web API, menyimpan konfigurasi untuk projek JavaScript/TypeScript, atau bertukar data antara perkhidmatan. Ini ialah pilihan lalai untuk kebanyakan aplikasi moden.
- Pilih YAML apabila menulis fail konfigurasi yang manusia akan baca dan edit dengan kerap. Kebolehbacaan dan sokongan ulasannya menjadikannya ideal untuk DevOps dan infrastructure-as-code.
- Pilih CSV apabila bekerja dengan data jadual, mengimport/mengeksport daripada hamparan atau pangkalan data, atau apabila saiz fail mesti minimum. Elakkan untuk apa-apa yang berhierarki.
- Pilih XML apabila bekerja dengan sistem perusahaan, SOAP API, atau konteks yang memerlukan pengesahan skema formal. Ia juga pilihan yang tepat apabila anda memerlukan penanda berorientasikan dokumen (seperti SVG atau RSS).
Menukar Antara Format
Menukar antara format ini adalah tugas biasa. Beberapa perkara yang perlu diingat:
- JSON ke YAML (dan sebaliknya) biasanya tanpa kehilangan kerana YAML ialah superset JSON.
- CSV ke JSON/YAML berfungsi baik untuk data rata tetapi memerlukan keputusan tentang struktur untuk output bersarang.
- XML ke JSON boleh kehilangan maklumat (atribut, ruang nama, susunan) kerana JSON tidak mempunyai konsep yang setara.
- Mana-mana format ke CSV hanya berfungsi jika data rata atau boleh diratakan secara bermakna.
Petua. Apabila menukar antara format, sentiasa sahkan output. Penukaran automatik boleh kehilangan data secara senyap, terutamanya dengan atribut XML, paksaan jenis YAML, atau kes tepi pengekodan CSV.
Ketahui Lebih Lanjut
ToolK.io menyediakan alat percuma untuk menukar antara JSON, YAML, CSV, dan XML, memformat dan mengesahkan data anda, dan meneroka tutorial berkaitan untuk bekerja dengan data berstruktur dalam projek anda.
