Apakah penukaran JSON ↔ YAML?
JSON (JavaScript Object Notation, RFC 8259) ialah format teks ketat berpendakap untuk data berstruktur; YAML (YAML Ain't Markup Language, versi 1.2) ialah superset JSON yang menggunakan indentasi, hentian baris, dan sintaks mesra manusia untuk model nilai yang sama. Menukar antara keduanya membolehkan anda menukar konfigurasi yang sama antara bentuk mesra mesin (JSON untuk API, pengesahan skema, transformasi berprogram) dan bentuk mesra manusia (YAML untuk semakan kod, manifes Kubernetes, aliran kerja GitHub Actions) tanpa menaip semula satu kunci pun.
Bagaimana penukaran JSON ↔ YAML berfungsi?
Setiap penukaran dijalankan secara tempatan di pelayar anda menggunakan perpustakaan js-yaml yang digabungkan (MIT, versi 4.1.0). Langkah-langkah utama adalah:
- Pemilih mod (Kesan automatik / JSON → YAML / YAML → JSON) menentukan saluran paip mana yang dijalankan. Dalam mod Kesan automatik, aksara bukan-ruang kosong pertama input memilih arah —
{atau[bermakna JSON; apa-apa lagi bermakna YAML. - JSON → YAML:
JSON.parsemengesahkan input dan menghasilkan nilai JavaScript;jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false })menulis bentuk YAML 1.2. Dengan Berbilang dokumen dihidupkan, tatasusunan input dibuang satu elemen per dokumen dan disambung dengan pemisah---. - YAML → JSON:
jsyaml.loadAllmenghurai setiap dokumen dalam input (mengendalikan pemisah---secara automatik) kepada tatasusunan; input satu dokumen dibuang pembalut supaya output JSON ialah dokumen itu sendiri, bukan tatasusunan satu elemen. - Inden (2 atau 4 ruang) dan Cetak cantik boleh dikonfigurasi. Cetak cantik dimatikan mengeluarkan JSON diminikan melalui
JSON.stringify(value)tanpa ruang kosong. - Output ditulis ke textarea baca sahaja. Pada kegagalan hurai YAML, mesej ralat termasuk baris dan lajur berindeks-1 yang dilaporkan oleh
e.markdarijs-yamlsupaya anda boleh terus ke pepijat.
Mengapa tukar JSON dan YAML dengan alat ini?
- Privasi: setiap laluan penghuraian, transformasi, dan pengeluaran berlaku di pelayar anda. Data — termasuk rahsia Kubernetes, JWT yang ditandatangani, dan konfigurasi proprietari — tidak pernah mencapai pelayan kami.
- YAML berbilang dokumen:
jsyaml.loadAllmengenali pemisah---dan mengembalikan tatasusunan dokumen, yang ditukar oleh penukar untuk kes satu dokumen atau dipelihara sebagai tatasusunan JSON untuk kes berbilang dokumen. - Sauh dan alias diselesaikan: mekanisme
&anchor/*aliasYAML dikendalikan oleh skema lalaijs-yaml. Nilai yang ditakrifkan sekali dan dirujuk dua kali melakukan perjalanan pulang pergi kepada objek JSON di mana semua rujukan memegang nilai yang sama. - Tiada CDN, tiada telemetri: perpustakaan
js-yaml.min.jsdihantar dari asal yang sama dengan halaman, jadi alat berfungsi luar talian, di belakang proksi korporat, dan dalam persekitaran air-gapped.
Apakah aplikasi biasa penukaran JSON ↔ YAML?
Penukaran antara JSON dan YAML muncul dalam DevOps, kejuruteraan platform, dan perkakas API:
- Manifes Kubernetes: menukar
Deployment,ConfigMap, atauHelmReleaseYAML kepada JSON supaya pengesah dasar dalaman (Joi, Ajv, OPA Rego) boleh melintasinya secara berprogram, kemudian kembali kepada YAML untuk aplikasi kelompok. - Aliran kerja CI/CD: mengulangi
workflow.ymlGitHub Actions melalui JSON supaya penjana kod boleh menulis semula matriks atau kebergantungan pekerjaan, kemudian mengeluarkan YAML yang dibersihkan untuk PR. - Spesifikasi OpenAPI: menampalkan
openapi.jsonJSON daripada dokumen yang dijana secara automatik oleh backend dan menukar kepadaopenapi.yamluntuk rujukan yang diedit secara manual yang dimasukkan ke dalam repositori.
Bagaimana contoh perjalanan pulang pergi JSON ↔ YAML kelihatan?
Menampal {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} dan menekan TUKAR dalam mod JSON → YAML menghasilkan lapan baris YAML dengan inden dengan apiVersion: apps/v1 pada baris pertama. Memasukkan semula YAML itu dalam mod YAML → JSON dengan Cetak cantik dihidupkan mengembalikan objek asal bait demi bait selepas JSON.stringify(value, null, 2) yang stabil, dengan tertib kunci dipelihara kerana skema lalai js-yaml menghormati tertib kemasukan pada kedua-dua arah.
Adakah penukar JSON ↔ YAML ini berjalan sepenuhnya di pelayar saya?
Ya. Setiap laluan penghuraian, transformasi, dan pengeluaran dijalankan secara tempatan sebagai JavaScript dalam tab pelayar anda. Perpustakaan js-yaml yang digabungkan dihantar dari asal yang sama dengan halaman — tiada CDN, tiada fetch, tiada XMLHttpRequest, tiada navigator.sendBeacon pada input. Alat ini juga berfungsi luar talian setelah halaman dimuatkan, kerana ia adalah bundle HTML/CSS/JS statik dengan perpustakaan vendor disalin bersamanya. Rahsia Kubernetes, muatan JWT, YAML CloudFormation yang ditandatangani, dan konfigurasi proprietari kekal pada peranti anda.
Bagaimana penukar mengendalikan YAML berbilang dokumen?
YAML menyokong berbilang dokumen dalam satu aliran yang dipisahkan oleh baris yang mengandungi hanya ---. Pada YAML → JSON, penukar memanggil jsyaml.loadAll, yang mengembalikan setiap dokumen sebagai nilai JavaScript. Jika tepat satu dokumen ditemui, output JSON ialah dokumen itu secara langsung; jika dua atau lebih ditemui, output JSON ialah tatasusunan. Pada JSON → YAML, apabila input ialah tatasusunan JSON DAN togol Berbilang dokumen dihidupkan, setiap elemen tatasusunan dikeluarkan sebagai dokumennya sendiri dengan pemisah --- di antaranya — berguna untuk menjana bundle mesra kubectl apply daripada tatasusunan JSON sumber.
Adakah sauh dan alias YAML disokong?
Ya — takrifan &anchor dan rujukan *alias diselesaikan oleh skema lalai js-yaml semasa langkah muat. Input YAML seperti defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d dihurai kepada objek JSON di mana job_a dan job_b kedua-duanya mengandungi retries: 3, timeout: 30. Kunci gabungan << (sambungan YAML 1.1 yang masih dihormati oleh js-yaml) juga disokong pada skema lalai.
Adakah komen YAML dipelihara semasa menukar ke JSON dan kembali?
Tidak — js-yaml membuang komen semasa langkah hurai, jadi perjalanan pulang pergi YAML → JSON → YAML akan kehilangan setiap baris berprefiks #. Ini adalah had yang diketahui bagi model muat/buang; jika pemeliharaan komen adalah kritikal, gunakan perpustakaan yang sedar komen seperti pakej npm yaml (yang menghantar API CST + AST yang direka untuk memelihara trivia) dan bukannya js-yaml. Untuk kebanyakan aliran kerja penukaran konfigurasi pertimbangannya boleh diterima: YAML yang menjalani perjalanan pulang pergi mengekalkan setiap kunci, nilai, sauh, dan alias, hanya tanpa komen yang ditulis oleh manusia.
Apa yang berlaku kepada tag YAML tersuai?
Penukar menggunakan DEFAULT_SCHEMA dari js-yaml, yang memahami !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary, dan !!timestamp — setiap tag dalam skema teras YAML 1.2 dan JSON. Tag tersuai atau khusus aplikasi (cth. !Ref dalam CloudFormation, !vault dalam Ansible) tidak dikenali dan muncul sebagai ralat yang jelas yang menyebut tag yang tidak disokong. Khusus untuk CloudFormation, gunakan aliran aws cloudformation package + --output-template-file untuk mengembangkan tag tersuai sebelum menampalnya ke dalam penukar ini.
Penukar JSON ↔ YAML ini dihantar dengan js-yaml@4.1.0 yang digabungkan pada asal yang sama, menyokong aliran berbilang dokumen dan sauh/alias di luar kotak, dan melaporkan ralat hurai YAML dengan baris dan lajur supaya anda boleh memperbaiki sumbernya. Tiada muat naik, tiada CDN, tiada telemetri — setiap bait kekal di pelayar anda.