UltKit

Penukar JSON ke YAML

Tulis semula JSON sebagai YAML yang mudah dibaca, disemak dan diberi komen. Muat naik fail .json dan dapatkan .yaml berinden dengan kunci, nilai dan susunan yang sama, sedia untuk dimasukkan ke dalam repositori.

Penukar Data

atau seret Fail CSV, TSV, TXT … ke sini ·

Maks 95 MB setiap fail· Sehingga 20 fail· Dipadam selepas 30 minit

Output

Fail diproses pada pelayan kami dan dipadam selepas 30 minit.

Cara menggunakan alat ini

  1. 1

    Tambah fail JSON

    Muat naik respons API, tetapan yang dieksport atau manifes yang dijana sebagai .json, sehingga 20 fail dan 95 MB setiap satu. Setiap fail mesti mengandungi satu nilai JSON yang sah.

  2. 2

    Kekalkan tetapan lalai

    YAML sudah dipilih di bawah Tukar ke. Tiada apa-apa lagi yang perlu diubah untuk fail konfigurasi; output menggunakan inden dua ruang.

  3. 3

    Tukar dan commit

    Tekan Tukar ke YAML, muat turun fail .yaml, tambah komen di tempat yang diperlukan oleh pembaca seterusnya, kemudian commit.

Jawapan

Bagaimana cara menukar JSON ke YAML?

Muat naik fail .json dan tekan Tukar ke YAML. Objek menjadi blok key: value berinden, tatasusunan menjadi senarai dengan sengkang, dan rentetan yang boleh disalah baca oleh YAML mengekalkan tanda petikannya.

Mengapa tukar JSON ke YAML untuk fail konfigurasi

Kebanyakan JSON dihasilkan oleh perisian: respons API, eksport tetapan, output penjana. Kebanyakan YAML diselenggara oleh manusia. Penukaran biasanya menandakan saat data berhenti menjadi output mesin dan menjadi sesuatu yang dimiliki oleh pasukan, seperti manifes penyebaran yang disimpan dalam Git, saluran paip CI atau set pemboleh ubah Ansible.

Kes biasa: anda memanggil API awan, menerima penerangan JSON 200 baris tentang sesuatu sumber, dan mahu menyimpannya sebagai kod infrastruktur. Penukaran memberi anda fail tanpa pendakap dan koma, tempat perubahan satu baris menghasilkan diff satu baris dan anda boleh menerangkan nilai pelik dalam komen. Perkara sama untuk fixture ujian dan fail terjemahan yang disunting oleh bukan pembangun. Jika anda perlukan jadual rata untuk hamparan atau laporan, JSON ke CSV lebih sesuai.

Alat yang menggunakan fail konfigurasi YAML

Tempat YAML yang ditukar biasanya digunakan
OrganisasiKeperluanSumber
GitHub ActionsAliran kerja terletak dalam .github/workflows sebagai fail .yml atau .yamlGitHub Docs
GitLab CI/CDSaluran paip ditakrifkan dalam .gitlab-ci.yml pada akar repositoriGitLab Docs
Docker ComposePerkhidmatan diperihalkan dalam compose.yaml (dahulunya docker-compose.yml)Docker Docs
AnsiblePlaybook dan fail pemboleh ubah ditulis dalam YAMLAnsible Docs
KubernetesManifes menerima JSON atau YAML; dokumentasi dan carta Helm menggunakan YAMLKubernetes

Contoh JSON ke YAML dengan nilai yang rumit

Output YAML untuk {"name":"api","version":"1.10","debug":false,"tags":["web","eu"],"country":"NO"}
name: api
version: "1.10"
debug: false
tags:
  - web
  - eu
country: "NO"  # kod ISO Norway

Kelebihan YAML

  • Komen dengan #
  • Diff lebih pendek dalam semakan kod
  • Tiada pendakap, koma atau tanda petikan pada kebanyakan baris
  • Teks berbilang baris dengan skalar blok |

Perkara yang perlu diberi perhatian

  • Inden membawa makna, jadi satu ruang tersasar mengubah struktur
  • Tab tidak dibenarkan untuk inden
  • Rentetan tanpa tanda petikan boleh dibaca sebagai nombor atau boolean
  • Penghurai lebih perlahan dan kurang seragam berbanding JSON

Contoh ini menunjukkan mengapa mencari dan menggantikan pendakap sahaja tidak mencukupi. Versi 1.10 ialah rentetan dalam JSON; jika ditulis tanpa petikan dalam YAML, ia akan dibaca sebagai nombor 1.1. NO, kod ISO bagi Norway, akan dibaca sebagai false oleh penghurai YAML 1.1 seperti PyYAML. Kedua-duanya mengekalkan tanda petikan, manakala nombor dan boolean sebenar kekal tanpa petikan.

Perbandingan JSON dan YAML

JSON

JavaScript Object Notation

JSON ialah format teks ringan untuk data berstruktur, dipopularkan oleh Douglas Crockford pada awal 2000-an dan dipiawaikan sebagai RFC 8259 dan ECMA-404. Ia mewakili objek, tatasusunan, rentetan, nombor, boolean dan null dengan sintaks yang mudah dibaca. Ia ialah format lalai untuk API web, fail konfigurasi dan pertukaran data antara aplikasi dalam hampir semua bahasa pengaturcaraan. Ia tidak mempunyai komen, tarikh atau skema terbina dalam, dan fail bersarang yang besar sukar dibaca tanpa pemapar.

Pemampatan
–
Ketelusan
–
Animasi
–
Diperkenalkan
2001 · Douglas Crockford
Penukar JSON

YAML

YAML

YAML ("YAML Ain't Markup Language") ialah format data mesra manusia yang mula dilancarkan pada 2001. Ia menggunakan lekukan dan bukannya kurungan, menyokong komen, dan merupakan superset JSON. Ia digunakan secara meluas untuk konfigurasi dalam Docker Compose, Kubernetes, GitHub Actions dan banyak aplikasi. Pergantungannya pada ruang kosong menjadikannya mudah rosak akibat satu ruang yang tersalah letak, dan sesetengah nilai, seperti "no" atau tarikh, boleh ditafsirkan secara tidak dijangka.

Pemampatan
–
Ketelusan
–
Animasi
–
Diperkenalkan
2001 · Clark Evans, Ingy döt Net, Oren Ben-Kiki
Penukar YAML

Orang menukar JSON ke YAML apabila data yang dijana atau data API perlu menjadi fail konfigurasi yang diselenggara oleh manusia, disemak dalam pull request dan diberi anotasi dengan komen.

Soalan lazim penukar JSON ke YAML

Adakah JSON sudah pun YAML yang sah?

Di bawah YAML 1.2, ya: semakan 2009 ditulis supaya setiap dokumen JSON juga merupakan dokumen YAML. Anda boleh menampal JSON ke dalam fail .yaml dan kebanyakan alat akan menerimanya. Penukaran adalah untuk kebolehbacaan: gaya blok tanpa pendakap, tanda petikan dan koma ialah yang dijangka oleh penyemak dan penyelenggara seterusnya.

Mengapakah sesetengah nilai diapit tanda petik dalam YAML?

Kerana tanpa tanda petikan, YAML akan membacanya sebagai jenis lain. Rentetan versi seperti 1.10 akan menjadi nombor 1.1, dan yes atau off boleh menjadi boolean dalam penghurai lama. Rentetan yang kelihatan seperti nombor, tarikh atau boolean memerlukan tanda petikan supaya kekal sebagai rentetan, jadi penukaran yang teliti mengekalkannya.

Bolehkah saya menambah komen selepas menukar?

Ya, dan itulah sebab biasa untuk menukar. Tulis # diikuti nota anda di hujung baris atau pada barisnya sendiri. JSON tiada cara untuk menerangkan mengapa sesuatu nilai ditetapkan; YAML ada, sekali gus memudahkan semakan dan serah tugas.

Mengapakah YAML saya gagal dengan ralat aksara tab?

Spesifikasi YAML melarang tab untuk inden; hanya ruang yang dikira. Penukar menulis ruang, tetapi editor yang ditetapkan untuk memasukkan tab boleh merosakkan fail pada suntingan seterusnya. Tetapkan editor anda untuk menggunakan ruang bagi fail .yaml.

Adakah Kubernetes akan menerima manifest yang ditukar?

kubectl membaca JSON dan YAML, jadi datanya sama sahaja; versi YAML cuma yang digunakan oleh kebanyakan dokumentasi, carta Helm dan semakan kod. Jika kemudian anda perlukan JSON semula untuk jq atau panggilan API, YAML ke JSON boleh membalikkannya.