YAML / JSON / TOML / .env Dönüştürücü

YAML'dan JSON'a Dönüştürücü: Yapılandırma Formatı Çevirici

YAML yapılandırma dosyalarını JSON'a dönüştürün. Bağlantıları çözümler, sözdizimini doğrular ve geçerli JSON çıktısı üretir.

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

İlgili Araçlar

JSON Çıktısı

Örnek YAML’ı 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"
    ]
  }
}

Girinti hiyerarşisi iç içe JSON nesnelerine dönüşür. YAML dizileri JSON dizileri olur. Boolean veya sayı olmayan tırnaksız YAML stringleri JSON stringi olur.

Sorunsuz Dönüşenler

Çoğu YAML, bilgi kaybı olmadan JSON’a temiz bir şekilde dönüşür:

YAML türüJSON karşılığı
Mapping (key: value)Object ({"key": "value"})
Sequence (- item)Array (["item"])
StringString
IntegerNumber
FloatNumber
Boolean (true/false)Boolean
Null (null, ~, boş)null

Tipik bir Kubernetes manifesti veya Docker Compose dosyası için dönüştürme, veri perspektifinden kayıpsızdır.

Kaybolan Özellikler

Yorumlar

YAML yorumları (# ile başlayan satırlar veya satır içi # yorum ekleri) tamamen atılır. JSON’da yorum sözdizimi yoktur. YAML yapılandırmanız alanları belgelemek için yorum kullanıyorsa, bu açıklamalar JSON çıktısında kaybolur. Bunun için yorumları ayrı bir şemaya veya README’ye taşımaktan başka çözüm yoktur.

Bağlantılar ve Takma Adlar

YAML, yeniden kullanılabilir bir bloğu bağlantı ile tanımlamanıza ve başka bir yerde takma ad ile referans vermenize izin verir:

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  host: prod.example.com

staging:
  <<: *defaults
  host: staging.example.com

JSON çıktısında *defaults hem production hem de staging içinde tamamen genişletilir. Bağlantı notasyonu kaybolur ve paylaşılan değerler çoğaltılır:

{
  "defaults": { "timeout": 30, "retries": 3 },
  "production": { "timeout": 30, "retries": 3, "host": "prod.example.com" },
  "staging": { "timeout": 30, "retries": 3, "host": "staging.example.com" }
}

YAML Etiketleri

!!binary, !!timestamp ve !!python/object gibi etiketler YAML’a özgü tip ek açıklamalarıdır. Çoğu dönüştürücü değeri string’e dönüştürür veya hata verir. 2024-01-15 gibi !!timestamp değerleri, kütüphaneye bağlı olarak string, sayı (Unix epoch) olabilir veya hataya neden olabilir.

Bu Dönüşüme Ne Zaman İhtiyaç Duyarsınız

Kubernetes API Çağrıları

Kubernetes kaynakları dahili olarak JSON olarak saklar ve REST API’si JSON kabul eder. Kubernetes API’sini doğrudan çağırırken (kubectl kullanmak yerine) JSON’a ihtiyacınız vardır. Manifestiniz YAML ise önce dönüştürün:

# kubectl sizin için dönüştürebilir
kubectl apply -f deployment.yaml --dry-run=client -o json

Veya betik boru hatları için özel bir araç kullanın.

YAML Yapılandırmasını JavaScript veya TypeScript’e Aktarma

Node.js’de yerleşik YAML ayrıştırıcısı yoktur. Bazı ekipler, YAML bağımlılığı eklemek yerine yapılandırmayı JSON olarak saklar. Derleme zamanında bir kez dönüştürmek veya JSON’ı YAML’ın yanında depolamak basit durumlar için pratik bir seçenektir.

JSON Olarak Görüntüleyerek YAML Hata Ayıklama

JSON’ın açık parantez ve tırnakları yapıyı belirsiz hale getirir. YAML’ın girintisi aldatıcı olabilir: yanlış yerleştirilmiş bir boşluk, bir anahtarın hangi bloğa ait olduğunu değiştirir. JSON’a dönüştürmek ve yapıyı kontrol etmek, YAML’ınızın gerçekten düşündüğünüz gibi ayrıştırılıp ayrıştırılmadığını doğrulamanın hızlı bir yoludur. Bu, özellikle girinti hatalarının kafa karıştırıcı davranışlara neden olduğu Helm chart değerlerinde veya GitHub Actions iş akışı dosyalarında hata ayıklarken kullanışlıdır.