JSON atau YAML
Inti pati: JSON menandakan sempadan dengan kurungan kurawal dan YAML dengan inden: mesin mendapat JSON, manusia yang menyunting konfigurasi mendapat YAML. Komen, sauh dan struktur berbilang dokumen tidak terselamat.

Pokoknya: guna JSON untuk data mesin-ke-mesin dan YAML untuk konfigurasi yang disunting manusia; utamakan YAML apabila anda memerlukan komen, teks berbilang baris atau sauh, dan JSON apabila setiap bahasa mesti menghuraikan muatan yang sama tanpa kekaburan.
Bersebelahan
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
Struktur yang sama. YAML membuang tanda baca dan mendapat tempat untuk komen.
Di mana ia berbeza
| JSON | YAML | |
|---|---|---|
| Struktur | Kurungan kurawal dan koma | Inden |
| Komen | Tiada | Ya |
| String | Tanda petikan berganda, escape diperlukan | Biasanya tanpa petikan |
| Teks berbilang baris | Escape \n atau tatasusunan |
Skalar blok ` |
| Penggunaan semula | Tiada | Sauh & dan alias * |
| Berbilang dokumen | Bungkus dalam tatasusunan | Pemisah --- |
| Kelajuan penghuraian | Pantas | Lebih perlahan, peraturan inden |
| Kekaburan | Sangat rendah | no dihuraikan sebagai boolean, inden tersasar satu |
Baris terakhir itu ialah kos sebenar YAML. Dalam YAML 1.1, country: NO menghasilkan boolean false, dan version: 1.0 mungkin menjadi float. JSON tidak mempunyai penjenisan tersirat sama sekali.
Memilih
JSON: badan permintaan dan respons, mesej antara perkhidmatan, lajur JSON dalam pangkalan data, apa-apa yang mesti dihuraikan secara serupa dalam setiap bahasa.
YAML: ekosistem yang menjadikannya lalai (Kubernetes, Ansible, GitHub Actions, Docker Compose); konfigurasi yang memerlukan penjelasan; fail yang didominasi teks panjang seperti sijil, skrip atau SQL.
Apa yang hilang semasa penukaran
YAML → JSON: semua komen, penggunaan semula sauh (dikembangkan menjadi pendua), semua dokumen kecuali yang pertama, dan ejaan asal tarikh serta boolean.
JSON → YAML: perbezaan string/nombor menjadi lemah, jadi "8080" dan 8080 kedua-duanya memerlukan petikan eksplisit agar kekal selamat.
Tukar untuk migrasi dan pemeriksaan sekali sahaja. Jangan selenggara fail yang sama dalam dua format sebagai pandangan selari.
Soalan Lazim
Bagaimana saya harus memilih antara JSON dan YAML?
Mulakan dengan siapa yang membaca dan menyelenggara fail itu: guna JSON apabila program menjananya, ia merentasi sempadan bahasa, dan ia mesti dihuraikan secara boleh dijangka; guna YAML apabila manusia menyuntingnya dan memerlukan penjelasan medan atau teks berbilang baris yang panjang. Ia boleh ditukar antara satu sama lain, tetapi jangan selenggara konfigurasi yang sama dalam kedua-dua format untuk jangka panjang.
Mengapa YAML menghasilkan lebih banyak kekaburan jenis?
YAML mempunyai penjenisan tersirat, jadi nilai seperti NO, on atau 1.0 boleh menjadi boolean, tarikh atau nombor. JSON hanya mempunyai jenis eksplisit: string mesti dipetik, yang menjadikan penghuraian lebih boleh dijangka merentas bahasa.
Patutkah komen dan sauh kekal apabila menukar YAML ke JSON?
Tidak. Komen, sauh dan berbilang dokumen YAML tidak boleh diwakili dalam JSON; sauh dikembangkan menjadi kandungan pendua. Jika anda perlu mengekalkannya, gunakan pustaka YAML dengan Document API dan bukannya pusingan penuh melalui objek.