YAML'den JSON Biçimine Dönüştürme
yaml kütüphanesiyle tek bir YAML belgesini (YAML 1.2 çekirdek şeması) ayrıştırır ve girintili JSON üretir. Yorumlar kaldırılır, çapalar ve takma adlar açılır; yes veya 2024-01-01 gibi değerler dize kalır.
YAML ile yazılan ayarları yalnızca JSON kabul eden bir API'ye veya JSON Schema doğrulayıcısına göndermek.
Ne zaman kullanılır?
- YAML ile yazılan ayarları yalnızca JSON kabul eden bir API'ye veya JSON Schema doğrulayıcısına göndermek.
- CI veya Kubernetes dosyasındaki değerlerin gerçek türünü, örneğin sürümün dize mi sayı mı olduğunu kontrol etmek.
Nasıl kullanılır?
- Tek bir YAML belgesi yapıştırın veya .yaml/.yml dosyası yükleyin.
- Hata görünürse bildirilen satırdaki girintiyi, yinelenen anahtarları ve --- ayırıcılarını kontrol edin.
- JSON çıktısındaki dizeleri ve sayıları inceleyip kopyalayın.
YAML girdisi
# deployment settings service: billing-api replicas: 2 version: "1.10" enabled: yes ports: - 80 - 443 env: LOG_LEVEL: info
JSON
{
"service": "billing-api",
"replicas": 2,
"version": "1.10",
"enabled": "yes",
"ports": [
80,
443
],
"env": {
"LOG_LEVEL": "info"
}
}Ayrıntılar ve sınırlamalar
Ayrıştırma tarayıcıda yapılır. Çıktı her zaman 2 boşluk girintili JSON'dur; küçültme seçeneği yoktur.
YAML 1.2 kuralları geçerlidir: yes/no/on/off mantıksal değer değil dizedir; tırnaksız tarihler de dize kalır. 0o17 sekizliktir (15).
Birleştirme anahtarları (<<: *anchor) uygulanmaz; gerçek bir "<<" anahtarı olarak görünür. Aynı eşlemedeki yinelenen anahtarlar hata oluşturur.
2^53 sınırını aşan tam sayılar JSON'da hassasiyet kaybeder. Uzun kimlikleri YAML içinde tırnakla yazın.
FAQ
--- ile ayrılmış birden fazla belge içeren dosyayı dönüştürebilir mi?
Hayır. Birden fazla belge "Source contains multiple documents" hatasına yol açar. Her seferinde tek belge yapıştırın. Başta tek bir --- bulunabilir.
enabled: yes neden JSON'da dize oluyor?
Ayrıştırıcı YAML 1.2'yi izler; yalnızca true ve false mantıksal değerdir. JSON mantıksal değeri için true/false yazın.
Çapalar ve takma adlar destekleniyor mu?
Evet. *base gibi bir takma ad, çapalı değerin kopyasıyla değiştirilir. Ancak YAML 1.1 birleştirme anahtarı << uygulanmaz.