JSON verisini anında YAML formatına dönüştürün. İç içe nesneler, diziler, çok satırlı stringler ve veri tiplerini korur. Tarayıcıda çalışır, yükleme yok.
Örnek JSON’u dönüştürmek şu çıktıyı üretir:
server:
host: 0.0.0.0
port: 8080
ssl: true
database:
url: postgresql://localhost:5432/myapp
pool_size: 10
timeout: 30
logging:
level: info
format: json
outputs:
- stdout
- file
İç içe yapı doğrudan YAML’ın girinti hiyerarşisine dönüşür. Integer ve boolean değerler kendi türlerinde kalır. Diziler, her öğe için - ön ekiyle YAML dizilerine dönüşür.
YAML ve JSON aynı veri modelini temsil eder: stringler, sayılar, booleanlar, null, diziler ve nesneler. Sözdizimi farklılıkları kozmetiktir ancak okunabilirlik için önemlidir.
| JSON | YAML |
|---|---|
{ "key": "value" } |
key: value |
{ "key": 42 } |
key: 42 |
{ "key": true } |
key: true |
{ "key": null } |
key: null |
["a", "b"] |
- a\n- b |
| İç içe nesne | Girintili blok |
JSON, tüm string anahtarlar ve çoğu string değer için tırnak işareti gerektirir. YAML, değer belirsiz olmadığı sürece (sayılar, booleanlar, özel karakterler) tırnaksız stringlere izin verir. YAML’ın “Norveç sorunu” burada ortaya çıkar: NO ülke kodu, YAML 1.1 ayrıştırıcıları tarafından boolean false olarak ayrıştırılır. Boolean veya sayı gibi görünen stringleri her zaman tırnak içine alın.
YAML, insanların doğrudan yapılandırma dosyalarını düzenlediği yerlerde karşımıza çıkar:
Her Kubernetes kaynağı YAML ile tanımlanır. kubectl apply -f deployment.yaml standart iş akışıdır. Helm chart değer dosyaları YAML’dır. Girinti hiyerarşisi, Kubernetes’in iç içe spec yapısına temiz bir şekilde eşlenir.
docker-compose.yml servis tanımları, volume mountlar, port eşlemeleri ve ortam değişkenleri için YAML kullanır. Yorum desteği, belirli bir port veya volume yolunun neden seçildiğini belgelemek için özellikle kullanışlıdır.
.github/workflows/ dizinindeki iş akışı dosyaları YAML’dır. Çok satırlı string desteği (| literal blok için, > folded blok için), run: adımlarındaki inline shell scriptleri için kullanışlıdır.
Ansible playbook ve envanter dosyaları YAML’dır. Liste sözdizimi doğrudan Ansible’ın görev listelerine eşlenir.
JSON, makine tarafından oluşturulan veya tüketilen yapılandırmalar için daha iyidir:
package.json ve package-lock.json: araçlar bunları oluşturur ve okurtsconfig.json: TypeScript derleyicisi bunu okur ve doğrular; standart dışı bir uzantı olarak yorumları destekler, ancak belirtim formatı JSON’durYAML 1.1 (PyYAML, Ruby’nin psych varsayılanı ve diğer birçok kütüphane tarafından kullanılır) bu tırnaksız değerleri boolean olarak işler:
# Bunların hepsi YAML 1.1'de boolean olur
enabled: yes
disabled: no
flag: on
toggled: off
Ülke kodları, kısaltmalar ve kısa yapılandırma değerleri sık sık bu tuzağa düşer. Yanlış okunabilecek stringleri tırnak içine alın:
country: "NO"
status: "off"
YAML dosyasında herhangi bir yerde tek bir sekme karakteri ayrıştırma hatasına neden olur. Çoğu düzenleyicide “convert tabs to spaces” ayarı bulunur. YAML dosyaları için bunu etkinleştirin.
YAML’ın çok satırlı stringler için iki blok skaler stili vardır. Literal blok stili (|) satır sonlarını korur:
script: |
#!/bin/bash
echo "hello"
exit 0
Folded blok stili (>) satır sonlarını boşluklara dönüştürür (okunabilirlik için satırlara bölünmüş uzun tek satırlık değerler için kullanışlıdır). JSON’da eşdeğer bir sözdizimi yoktur, bu nedenle çok satırlı JSON stringleri (içinde \n kaçış dizileri olan), dönüştürücü gömülü satır sonlarını algıladığında YAML literal bloklarına dönüşür.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.