YAML / JSON / TOML Converter

JSON'dan YAML'a Dönüştürücü: Online Dönüştürme Aracı

JSON verisini anında YAML formatına dönüştürün. İç içe nesneler, diziler, çok satırlı stringler ve veri tiplerini korur.

Verileriniz tarayıcınızdan çıkmaz.

İlgili Araçlar

YAML Çıktısı

Ö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.

JSON’un YAML’a Nasıl Eşlendiği

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.

JSONYAML
{ "key": "value" }key: value
{ "key": 42 }key: 42
{ "key": true }key: true
{ "key": null }key: null
["a", "b"]- a\n- b
İç içe nesneGirintili 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 Ne Zaman Kullanılır

YAML, insanların doğrudan yapılandırma dosyalarını düzenlediği yerlerde karşımıza çıkar:

Kubernetes ve Helm

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

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 Actions

.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

Ansible playbook ve envanter dosyaları YAML’dır. Liste sözdizimi doğrudan Ansible’ın görev listelerine eşlenir.

JSON Ne Zaman Kullanılır

JSON, makine tarafından oluşturulan veya tüketilen yapılandırmalar için daha iyidir:

YAML Tuzakları

Norveç Sorunu

YAML 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"

Sekme ile Girinti

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.

Çok Satırlı Stringler

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.