JSON Toolkit

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.

Pemula~4 min bacaanDiterbitkan 2026-10-30Dikemas kini 2026-10-30
Bila hendak guna JSON dan bila hendak guna YAML

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.

Bacaan lanjut