TOML'dan JSON'a

Rust’ın Cargo.toml’u, Python’un pyproject.toml’u, Hugo’nun config.toml’u: TOML modern yapılandırma dünyasının her yerinde, ama birçok araç hâlâ yalnızca JSON konuşuyor. TOML’u buraya yapıştırın ve düzgün biçimlendirilmiş JSON alın: [tablo] bölümleri iç içe nesnelere, [[tablo dizisi]] blokları nesne dizilerine dönüşür, tarihler ise yazıldığı gibi dize olarak geçer. Ayrıştırıcı TOML’un günlük çekirdeğini kapsar; gerçek sınırları (çok satırlı değerler, satır içi tablolar, noktalı anahtarlar) aşağıda açıkça listelenmiştir.

Dönüştürme nasıl çalışır

  1. 1

    TOML'unuzu yapıştırın

    Metni giriş kutusuna bırakın ve JSON'a Dönüştür düğmesine basın. Satırın tamamını kaplayan # yorumları otomatik olarak atlanır.

  2. 2

    Tablolar nesneye dönüşür

    `[server.database]` başlığı, noktayla ayrılan her ad için bir seviye olacak şekilde iç içe JSON nesnelerine dönüşür.

  3. 3

    Tablo dizileri diziye dönüşür

    `[[users]]` blokları, blok başına bir nesne içeren bir JSON dizisi kurar.

  4. 4

    Skaler değerler türünü korur

    Tırnaklı dizeler, sade ondalık tam sayılar ve kesirli sayılar ile true/false yerel JSON türlerine dönüşür; tarihler yazıldığı haliyle dize olarak kalır.

  5. 5

    JSON'u kopyalayın

    Sonuç 4 boşluklu girintiyle biçimlendirilir, anahtarlar özgün sırasında kalır ve kopyalanmaya hazırdır.

Türler nasıl eşlenir

TOML değeri JSON değeri Örnek
Dize (basic veya literal) Dize "hello" → "hello"
Tam sayı (sade ondalık) Sayı 42 → 42
Kesirli sayı (sade ondalık) Sayı 3.14 → 3.14
Mantıksal Mantıksal true → true
Dizi (tek satır) Dizi [1, 2, 3] → [1, 2, 3]
Anahtarlı tablo Nesne [server] + port = 8080 → "server": {"port": 8080}
Tablo dizisi Nesne dizisi [[users]] + name = "alice" → "users": [{"name": "alice"}]
Tarih-saat Dize, yazıldığı gibi 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z"

Çıktı her zaman 4 boşluklu girintiyle biçimlendirilir, dolayısıyla diziler ve nesneler birden çok satıra yayılır; yukarıdaki tablo okunabilirlik için değerleri tek satırda gösterir. Anahtar sırası TOML’unuzda göründüğü haliyle korunur.

Baştan sona örnek

title = "My App"

[server]
host = "localhost"
port = 8080

[[users]]
name = "alice"
admin = true

şuna dönüşür:

{
    "title": "My App",
    "server": {
        "host": "localhost",
        "port": 8080
    },
    "users": [
        {
            "name": "alice",
            "admin": true
        }
    ]
}

Desteklenen TOML ve gerçek sınırlar

Desteklenenler: noktalı bölüm adları dahil [tablo] başlıkları, [[tablo dizileri]], tek satırlık key = value çiftleri, \n, \t ve \" kaçışlarıyla basic dizeler "...", literal dizeler '...', sade ondalık tam ve kesirli sayılar, true/false, tek satırlık diziler (iç içe olabilir), satırın tamamını kaplayan # yorumları ve dize olarak geçirilen tarihler.

Desteklenmeyenler ve bunun yerine yapılacaklar:

  • Çok satırlı dizeler (""" veya ''') ve çok satırlı diziler ayrıştırıcıyı hatayla durdurur. Önce değeri tek satıra alın.
  • Satır içi tablolar açılmaz: point = { x = 1, y = 2 } nesne değil, "{ x = 1, y = 2 }" dizesi olarak çıkar. Bunu ayrı bir [point] bölümü olarak yeniden yazın. Cargo.toml’daki serde = { version = "1.0" } gibi bağımlılık satırları klasik örnektir.
  • Eşittirin solundaki noktalı anahtarlar tek bir düz anahtar olarak kalır: server.host = "a" iç içe yapı kurmaz, "server.host" anahtarını üretir. Bunun yerine [server] başlığı kullanın. Başlıklardaki noktalı [bolum.adlari] ise doğru şekilde iç içe geçer.
  • Değerden sonraki yorumlar ayıklanmaz: port = 8080 # main, "8080 # main" dizesine dönüşür. Yorumları kendi satırlarında tutun.
  • Sade ondalık dışındaki sayı biçimleri tanınmaz: 1_000, 0xFF, 5e2, +99, inf ve nan tırnaklı dize olarak çıkar. Bunların yerine 1000, 255, 500, 99 yazın.
  • Basic dizelerdeki \uXXXX kaçışları çözülmez. Bunun yerine gerçek karakteri yapıştırın.

Eksiksiz bir TOML 1.0 belgesi için toml2json gibi bir komut satırı dönüştürücüsü kullanın ya da dosyayı Python’un tomllib modülüyle yükleyip JSON’u oradan yazdırın.

Nerelerde işe yarar

  • Hata ayıklarken bir TOML parçasını JSON olarak hızlıca incelemek.
  • Yalnızca JSON kabul eden linter, betik veya envanter araçlarına basit yapılandırma değerleri aktarmak.
  • Elle yazması daha rahat TOML notlarından test için JSON fikstürleri üretmek.
  • Küçük ve düz yapılandırma dosyalarını taşımak; Hugo’nun birçok config.toml dosyası tam olarak böyledir.

Gidiş-dönüş notları

  • Yorumlar asla hayatta kalmaz: JSON’da yorum sözdizimi hiç yoktur.
  • Tarihler dize olarak kalır; sonraki kodun bunları yeniden tarih nesnelerine ayrıştırması gerekir.
  • Büyük sayılar: JSON metninde tam sayılar 64 bit değer olarak korunur, ancak JavaScript tarafı 2^53 üzerinde hassasiyet kaybeder. Nanosaniye zaman damgalarına ve sayısal kimliklere dikkat edin.
  • Anahtar sırası bu dönüştürücüde yazıldığı gibi korunur; başka JSON araçları belgeyi yeniden yazarken anahtarları sıralayabilir.

Ters yön

JSON → TOML daha zorlu yolculuktur, çünkü JSON’da TOML’un sahip olmadığı ya da farklı ele aldığı yapılar (derin anonim iç içelik, null) vardır. Gidiş-dönüş senaryolarının çoğu TOML tarafında elle düzeltme ister.

Sık Sorulan Sorular

Hayır. JSON’da yorum sözdizimi yoktur, bu yüzden satırın tamamını kaplayan # yorumları doğrudan atlanır. Bir uyarı: değerden sonra gelen yorum ayıklanmaz; port = 8080 # main, “8080 # main” dizesine dönüşür. Dönüştürmeden önce yorumları kendi satırlarına taşıyın.

Hayır. Günlük çekirdeği kapsar: noktalı bölüm adlı tablolar, tablo dizileri, tek satırlık key = value çiftleri, tırnaklı dizeler, sade ondalık sayılar, mantıksal değerler, tek satırlık diziler ve tam satır yorumlar. Çok satırlı dizeler ve diziler, satır içi tablolar, noktalı anahtarlar ile 1_000 veya 0xFF gibi sayı biçimleri desteklenmez. Belirtimin tamamına uygun belgeler için toml2json ya da Python’un tomllib’i gibi bir CLI aracı kullanın.

Sıradan yapılandırma dosyaları anında dönüşür. Dönüştürme sunucumuzda çalıştığı için devasa belgeler istek boyutuyla sınırlıdır; birkaç megabaytlık TOML için komut satırı dönüştürücüsü daha uygundur.

Evet, bu dönüştürücü sunucu tarafında çalışır: TOML, HTTPS üzerinden sunucumuza gider, orada dönüştürülür ve aynı yanıtla geri döner. İçerik sonrasında saklanmaz; yalnızca anonim bir kullanım sayacı tutulur. Parola veya API anahtarı gibi gizli bilgileri yapıştırmaktan kaçının.

İlgili Araçlar

Araç diğer dillerde mevcuttur