JSON'dan TOML'e
JSON nesnelerini TOML v1.0 yapılandırma dosyalarına hızlıca dönüştüren ücretsiz bir çevrimiçi araçtır. İç içe tabloları ([section]), alt tabloları ([a.b]) ve tablo dizilerini ([[items]]) otomatik olarak oluşturur; bu yüzden Cargo.toml veya pyproject.toml taslağı hazırlarken oldukça kullanışlıdır. Tüm işlem tarayıcı içinde yerel olarak yapılır.
İlgili Öneriler
TOML nedir? JSON neden TOML'e dönüştürülür?
TOML, Tom's Obvious, Minimal Language (Tom'un Açık, Minimal Dili) anlamına gelir ve GitHub kurucu ortaklarından Tom Preston-Werner tarafından 2013'te yayımlanan bir yapılandırma dosyası formatıdır. Tasarım hedefleri: açık (obvious), minimal (minimal), insanlar tarafından kolay okunabilen ve belirsizlik taşımayan bir sözdizimi. TOML 1.0, 2021'de kararlı sürüm oldu (toml-lang/toml) ve günümüzde Rust ekosistemi Cargo, Python PEP 621 (pyproject.toml), Hugo, Prettier, Deno, Taplo gibi pek çok aracın varsayılan yapılandırma formatı haline geldi.
TOML, yapılandırma dosyası senaryolarında JSON ve YAML'e kıyasla birkaç belirgin avantaja sahiptir: ①YAML'in girintileme tuzağı yoktur — YAML hiyerarşiyi girintilemeyle ifade eder, girintileme hatası yapılandırmanın anlamını tamamen değiştirebilir (ör. list string olur), TOML ise hiyerarşiyi [table] ile açıkça bildirir, belirsizlik yoktur; ②JSON'dan daha uygun — JSON'daki tırnak ve süslü parantezler karmaşık yapılandırmalarda çok hantaldır, TOML'in key = value yazımı daha temizdir, yorumlar yerel olarak desteklenir; ③Net tür sistemi — TOML integer/float/string/boolean/datetime/array/table olmak üzere yedi türü ayırt eder, JSON'daki 'sayı tamsayı mı ondalık mı' belirsizliği yoktur, YAML 1.1'in Norway sorunu (NO'nun boolean false olarak ayrıştırılması) da yoktur.
TOML'in temel yapısı dört öğeden oluşur: ①Anahtar-değer çiftleri (key = value) temel yapılandırma öğelerini ifade eder; ②Tablo (Table) [name] ile adlandırılmış grupları ifade eder, iç içe geçmeyi ([a.b.c]) destekler; ③Tablo dizisi (Array of Tables) [[name]] ile aynı yapıdaki nesnelerin listesini ifade eder, çoklu ortam yapılandırması, eklenti listesi, bağımlılık listesi için sıkça kullanılır; ④Diziler (Array) temel türler için satır içi ([1, 2, 3]) ve çok satırlı iki yazımı destekler. Bu araç dönüştürme sırasında JSON yapısını akıllıca tanıyıp en uygun TOML sözdizimini otomatik seçer.
JSON'dan TOML'e dönüşümün yaygın nedenleri şunlardır: ①Proje Node.js ekosisteminden Rust/Python ekosistemine geçerken yapılandırma formatının TOML olarak birleştirilmesi gerekir; ②Ekip dağınık JSON yapılandırmalarını TOML'de birleştirmeye karar verir, TOML'in [section] hiyerarşisi JSON'ın derin iç içe yapısının okuma yükünü hafifletir; ③TOML ile YAML değiştirilerek girintilemeden kaynaklanan tuhaf hatalar ortadan kaldırılır; ④CI/CD'de yukarı yönden gelen JSON meta verileri TOML'e dönüştürülerek aşağı yöndeki araca enjekte edilir. Bu araç tüm bu senaryoların dönüşüm ihtiyaçlarını karşılar.
Dönüşüm süreci özünde bir sözdizimi ağacı eşlemesidir: JSON.parse() metni JavaScript nesnesine (AST) ayrıştırır, ardından her düğüm özyinelemeli olarak gezilir — dize, sayı, boolean, null ilgili TOML skalerlerine eşlenir; diziler öğe türüne göre satır içi dizi veya tablo dizisine ayrılır; iç içe nesneler tablo veya alt tabloya eşlenir. Son olarak TOML spesifikasyonuna göre metin çıktısı verilir. Bu yapılandırılmış eşleme, dönüşüm sonucunun sözdizimsel olarak %100 geçerli olmasını ve format hatası içermemesini garanti eder.
Kullanım senaryoları
- Rust projesi için hızlıca bir Cargo.toml taslağı hazırlamak istediğinizde
- Python projesi ayarlarını pyproject.toml dosyasına taşırken
- Hugo, Deno veya Prettier yapılandırmalarını JSON'dan TOML'e geçirirken
- CI/CD ya da DevOps yapılandırmalarını ekip genelinde TOML etrafında standartlaştırırken
- Mevcut JSON yapılandırmasını TOML ile karşılaştırıp daha okunur formatı seçmek isterken
- TOML söz dizimini, iç içe tablolar ve tablo dizileri üzerinden örneklerle öğrenmek isterken
Nasıl Kullanılır
- JSON'u sol düzenleyiciye yapıştırın ya da .json / .txt dosyası yükleyin. İsterseniz hazır örneği açabilirsiniz
- Araç veriyi anında ayrıştırır ve sağ panelde TOML v1.0 çıktısını oluşturur
- Bir sözdizimi hatası görürseniz uyarıyı kontrol edin ve gerekirse önce JSON'u düzeltin
- Sonucu kopyalayın veya config.toml olarak indirip projenizde kullanın
Özellikler
- TOML v1.0 uyumlu çıktı üretir ve sonucu Cargo, Poetry, Hugo, Prettier gibi TOML destekli araçlarda doğrudan kullanabilirsiniz
- Çok katmanlı JSON nesnelerini [a] ve [a.b.c] biçimindeki TOML tablolarına çevirerek hiyerarşiyi okunur tutar
- Nesne dizilerini [[items]] biçimindeki tablo dizilerine dönüştürür; bu da bağımlılık, host veya ortam listeleri için uygundur
- Çift tırnak, ters eğik çizgi, satır sonu ve sekme gibi özel karakterleri TOML kurallarına göre güvenli şekilde kaçar
- String, sayı, boolean ve null değerlerini uygun TOML türlerine eşler; null değeri boş string "" olarak yazar
- Solda JSON'u yapıştırdığınız anda sağda TOML sonucunu gerçek zamanlı gösterir
- İç içe nesneler, diziler ve tablo dizileri içeren hazır örneği tek tıkla yükleyebilirsiniz
- .json / .txt dosyalarını içe aktarabilir ve sonucu config.toml olarak indirebilirsiniz
- Masaüstünde panel genişliklerini sürükleyerek ayarlayabilir, son 200 geçmiş kaydını otomatik saklayabilirsiniz
- Dönüşümden sonra JSON biçimlendiriciye geçerek kaynak veriyi temizlemeye veya doğrulamaya devam edebilirsiniz
- Tüm işlemler tarayıcı JavaScript'i içinde yerel olarak yürütülür; hassas ayarlar sunucuya gönderilmez
Sık Sorulan Sorular
JSON nasıl TOML yapılandırma dosyasına dönüştürülür?
JSON içeriğini sol giriş kutusuna yapıştırın, araç JSON nesnesini otomatik olarak ayrıştırır ve TOML v1.0 spesifikasyonuna göre yapılandırma dosyası formatına dönüştürür. Anahtar-değer çiftleri key = value olur, iç içe nesneler TOML tablolarına ([section]) ve alt tablolara ([a.b]) dönüşür, diziler içeriğe göre otomatik olarak satır içi dizi veya tablo dizisine ([[items]]) ayrılır. Örnek düğmesine tıklayarak iç içe örnek yükleyebilir, dönüştürme sonucunu doğrudan config.toml dosyası olarak indirip proje yapılandırması olarak kullanabilirsiniz.
TOML, YAML ve JSON hangi senaryolara daha uygundur?
JSON API veri alışverişi ve ön uç-arka uç veri iletimi için uygundur, REST arayüzlerinin fiili standardıdır; YAML karmaşık veri yapıları ve CI/CD yapılandırmaları (GitHub Actions, Ansible, Kubernetes) için uygundur, okunabilirliği yüksektir, yorum ve çoklu belge destekler; TOML net yapılandırma dosyası senaryoları (Rust/Cargo, Python pyproject, Hugo, Prettier) için uygundur, sözdizimi basittir, belirsizlik azdır, girintileme tuzağı yoktur. Üçü arasında kesin bir iyi-kötü ayrımı yoktur, önemli olan senaryoyla eşleşmektir; yapılandırma dosyaları için TOML, CI/CD için YAML, API verisi için JSON önerilir.
İç içe JSON nesneleri TOML'de nasıl gösterilir?
TOML iç içe yapıları tablo (Table) ile gösterir. Tek katmanlı iç içe örnek {"database": {"host": "localhost"}} → [database] host = "localhost" şeklinde dönüşür; çok katmanlı iç içe örnek {"server": {"ssl": {"enabled": true}}} → [server.ssl] enabled = true şeklinde dönüşür. Bu araç iç içe seviyeleri otomatik tanır ve karşılık gelen tablo başlık yollarını üretir, manuel ayar gerekmez.
JSON dizileri TOML'de nasıl dönüştürülür?
TOML iki dizi sözdizimini ayırt eder: ①Temel tür dizileri (ör. ["a", "b", 1, 2]) satır içi diziye key = ["a", "b", 1, 2] dönüşür, köşeli parantezle sarılıp virgülle ayrılır; ②Nesne dizileri (ör. [{"name": "primary"}, {"name": "replica"}]) tablo dizisine [[items]] dönüşür, her nesnenin önüne [[items]] başlığı eklenir ve alanlar aşağıya düz serilir. Bu araç dizi türünü otomatik algılayıp en uygun TOML sözdizimini seçer.
Üretilen TOML doğrudan Cargo.toml olarak kullanılabilir mi?
Evet. Araç TOML v1.0 resmi spesifikasyonuna (github.com/toml-lang/toml) sıkı sıkıya uyar, üretilen TOML doğrudan Cargo (Rust paket yönetimi), Poetry/pyproject (Python paket yönetimi), Hugo (statik site), Prettier, Deno, Taplo ve TOML destekleyen tüm araçlarla kullanılabilir. Not: Cargo.toml'un belirli [package] / [dependencies] bölümlerine ihtiyacınız varsa, lütfen Cargo spesifikasyonuna göre ilgili alanları (name, version, edition, crate bağımlılık tabloları vb.) ekleyin.
JSON'daki null değeri neye dönüştürülür?
TOML'de null türü yoktur, bu nedenle JSON'daki null en yaygın eşdeğer olan boş dize "" olarak dönüştürülür. TOML tüketicinizin null alanlara özel bir gereksinimi varsa (ör. [dependencies] içinde belirli bir crate'in optional alanı), dönüştürme sonrası ilgili satırı manuel ayarlayın.
Dizelerdeki çift tırnak ve satır sonu nasıl işlenir?
TOML dizeleri çift tırnakla sarılmalıdır; içerideki çift tırnak, ters eğik çizgi, satır sonu (\n), satır başı (\r), sekme (\t) gibi karakterlerin TOML kurallarına göre kaçırılması gerekir. Bu araç bu kaçışları otomatik olarak yapar, örneğin JSON'daki He said "Hello" TOML'de He said \"Hello\" olur, çok satırlı dizelerdeki satır sonları \n'e dönüşür. Manuel kaçış gerekmez, araç çıktısı doğrudan TOML ayrıştırıcısı tarafından doğru okunur.
Üretilen TOML'de tarih-saat türü desteği var mı?
Bu araç yalnızca JSON metni girişini destekler, JSON standardında yerel tarih-saat türü yoktur (yaygın uygulama ISO 8601 dizesidir, ör. "2026-01-01T00:00:00Z"). Dönüştürülen TOML bu değerleri dize olarak korur (key = "2026-01-01T00:00:00Z"). TOML'in yerel local datetime/offset datetime türlerine ihtiyacınız varsa, lütfen dizeyi çıplak TOML tarih deyimine (ör. 2026-01-01T00:00:00) manuel olarak değiştirin.
Yerel tarayıcıda dönüştürme, yapılandırma verileri yüklenir mi?
Hayır. Tüm JSON ayrıştırma, TOML üretimi ve dize kaçışı tarayıcınızın yerel JavaScript motorunda tamamlanır, ağ üzerinden herhangi bir sunucuya gönderilmez, internetsiz de çalışır. Veritabanı parolası, API anahtarı, iç ağ adresi gibi hassas yapılandırma bilgileri içeren JSON'ları güvenle dönüştürebilirsiniz.
Sorun Giderme
JSON "Unexpected token" hatası nasıl çözülür?
Bu bir JSON sözdizimi hatasıdır. Yaygın nedenler: ①Sondaki fazladan virgül (trailing comma), ör. {"a":1,}; ②Dizeyi tek tırnakla sarmalama, ör. {'a':1} (JSON çift tırnak gerektirir); ③Anahtar adına tırnak koymama, ör. {a:1}; ④Yorum // veya /* */ (JSON standardı desteklemez). Bu yaygın hataları otomatik onarmak için sitemizdeki JSON onarım aracını kullanabilir, onarım sonrası bu araca yapıştırarak dönüştürebilirsiniz.
Dönüştürülen TOML Cargo'da "invalid TOML" hatası veriyor?
Genellikle alan adı çakışması veya eksik zorunlu alanlardan kaynaklanır. TOML ayrıştırıcısı tablo başlık yolları, yinelenen anahtar adları ve karakter kaçışı konusunda çok katıdır. Şunları kontrol edin: ①Aynı kapsamda yinelenen anahtar adı var mı; ②Dizedeki özel karakterler doğru kaçırılmış mı (çift tırnak, ters eğik çizgi, satır sonu); ③İç içe seviye çok derin mi (TOML 1.0 en fazla 5 seviye önerilir); ④[package] gibi Cargo için zorunlu bölümler eksik mi. Bu aracın ürettiği sözdizimi %100 geçerlidir, sorun genellikle kullanım tarafındadır (ör. alan adlarının Cargo spesifikasyonuna uygunluğu).
Nesne dizisi tablo dizisi yerine satır içi diziye mi dönüştü?
JSON dizileri yalnızca tüm öğeler temel tür (dize/sayı/boolean/null) olduğunda satır içi diziye ["a","b"] dönüşür, nesne dizileri (ör. [{"name":"x"}]) tablo dizisine [[items]] dönüşür. Nesne diziniz yanlışlıkla satır içi dizi olarak tanındıysa, diziye temel tür dışında öğe karışmış demektir. Verileri kontrol edin: ①Diziye dize veya sayı karışmış mı; ②İç içe seviye yapısı bozulmuş mu.
Bazı anahtar adları dönüşüm sonrası tırnak içine alındı, nasıl kaldırılır?
TOML, anahtar adlarının yalnızca harf, rakam, alt çizgi ve tire içermesine izin verir ([A-Za-z0-9_-]). JSON anahtar adı özel karakter içeriyorsa (boşluk, nokta, Çince karakter, emoji, ayrılmış sözcük), araç TOML'in geçerli olması için anahtarı otomatik olarak çift tırnakla sarar, ör. {"my key": 1} → "my key" = 1. Aşağı yöndeki aracınız tırnaklı anahtar adlarını kabul etmiyorsa, JSON anahtar adını geçerli karakterlere (A-Z a-z 0-9 _ -) değiştirip yeniden dönüştürün.
Büyük dosya dönüşümünde tarayıcı yavaşlıyor, ne yapmalı?
Araç gerçek zamanlı dönüşüm için optimize edilmiştir (yazarken dönüştürme), ancak çok büyük dosyalarda (>1MB, yüz binlerce satır) yine de yavaşlama olabilir. Öneriler: ①Önce JSON biçimlendirme aracıyla JSON'un geçerli olup olmadığını kontrol edin; ②Parçalar halinde dönüştürün (ör. üst düzey anahtarlara göre bölme); ③Tarayıcının yeterli belleği olduğundan emin olun; ④Çok büyük yapılandırma dosyaları (10MB+) için taplo, tomlq gibi komut satırı araçları önerilir, bu araç günlük yapılandırma senaryoları (KB - birkaç yüz KB) için tasarlanmıştır.
Sözlük
- TOML
- Tom's Obvious, Minimal Language, yapılandırma dosyaları için tasarlanmış, basit ve belirsizlik taşımayan bir format dilidir; Rust Cargo / Python pyproject / Hugo'nun varsayılan yapılandırma formatıdır.
- Tablo (Table)
- TOML'de [name] ile bildirilen adlandırılmış grup, JSON'daki nesneye karşılık gelir, [server.ssl] gibi noktayla iç içe geçmeyi destekler.
- Tablo Dizisi (Array of Tables)
- TOML'de [[name]] ile bildirilen aynı yapıdaki nesne listesi, her [[name]] bölümü bir nesnenin tüm alanlarını içerir, JSON'daki nesne dizisine karşılık gelir.
- Satır İçi Tablo (Inline Table)
- TOML 1.0'ın desteklediği, { key = value, key = value } ile tek satırda basit nesne bildiren, adlandırma gerektirmeyen düz nesneler için uygun sözdizimi.
- Cargo.toml
- Rust projelerinin standart yapılandırma dosyasıdır, package meta verilerini, dependencies, dev-dependencies, features vb. tanımlar, TOML formatındadır.
- pyproject.toml
- Python projelerinin standart yapılandırma dosyasıdır (PEP 621), build-system, project meta verileri, dependencies, tool yapılandırmasını (black/pytest/mypy vb.) tanımlar.
- TOML v1.0
- TOML 1.0, 2021'de resmi olarak yayımlanan kararlı sürümdür, bu araç bu spesifikasyona sıkı sıkıya uyar (github.com/toml-lang/toml/blob/main/toml.md).
- JSON iç içe nesnesi
- JSON'da başka nesneler içeren nesne, TOML'deki Tablo ([section]) veya alt tabloya ([a.b.c]) karşılık gelir.
- TOML kaçışı
- TOML dizelerinde çift tırnak, ters eğik çizgi, satır sonu gibi özel karakterler ters eğik çizgiyle kaçırılmalıdır (\", \\ , \n), bu araç bunu otomatik yapar.
- Yapılandırma dosyası (Config File)
- Uygulama başlatılırken okunan, koddan ayrılarak kolayca değiştirilebilen ayar dosyasıdır; TOML yapılandırma dosyalarının fiili standartlarından biridir.
JSON türü - TOML türü eşleme tablosu
Bu araç JSON türlerini aşağıdaki kurallara göre TOML türlerine dönüştürür:
| JSON Türü | TOML Türü | TOML Yazımı | Açıklama |
|---|---|---|---|
| string | string | key = "value" | TOML dizeleri çift tırnakla sarılmalıdır |
| integer | integer | key = 8080 | Tamsayılarda ondalık nokta yoktur |
| float | float | key = 3.14 | Ondalıklı sayılarda nokta olmalıdır |
| boolean | boolean | key = true | TOML yalnızca küçük harf true / false kabul eder |
| null | string (boş) | key = "" | TOML'de null türü yoktur, boş dizeye dönüştürülür |
| array[primitive] | array | key = ["a", "b"] | Temel tür dizileri satır içi köşeli parantezle yazılır |
| array[object] | array of tables | [[items]]
key = value | Nesne dizileri [[name]] tablo dizisi olarak yazılır |
| object | table | [name]
key = value | Nesneler [name] tablo bildirimiyle yazılır |
TOML dize kaçış karşılaştırma tablosu
TOML dizelerinde kaçırılması gereken özel karakterler:
| Orijinal Karakter | TOML Kaçış Sonrası | Ad | Örnek Senaryo |
|---|---|---|---|
" | \" | Çift tırnak | Dize içinde iç içe çift tırnak |
\ | \\ | Ters eğik çizgi | Windows yolu C:\Users |
Satır sonu | \n | Newline | Çok satırlı dizelerin sıkıştırılması |
Sekme | \t | Tab | Sekme karakteri alanları |
Satır başı | \r | Carriage Return | Windows satır sonu CRLF |
\b | \b | Backspace | Geri silme karakteri |
\f | \f | Form Feed | Sayfa ilerletme karakteri |
U+0000 | \u0000 | Unicode 0 | Kontrol karakterleri \u ile kaçırılmalıdır |
JSON'dan TOML'e örnek karşılaştırma
Karmaşık yapıdaki JSON girişlerinin karşılık gelen TOML çıktıları:
| Yapı | Örnek |
|---|---|
| JSON Giriş | { "name": "app", "port": 8080 } |
| TOML Çıktı | name = "app"
port = 8080 |
| JSON Giriş | { "server": { "host": "0.0.0.0", "port": 443 } } |
| TOML Çıktı | [server]
host = "0.0.0.0"
port = 443 |
| JSON Giriş | { "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] } |
| TOML Çıktı | [[hosts]]
ip = "10.0.0.1"
[[hosts]]
ip = "10.0.0.2" |
Privacy & Security
JSON ayrıştırma, TOML oluşturma, metin kaçışı ve dosya okuma işlemlerinin tamamı tarayıcınızın JavaScript ortamında yerel olarak çalışır. Girdiğiniz JSON ve üretilen TOML hiçbir sunucuya gönderilmez, kaydedilmez veya analiz edilmez. Bu nedenle veritabanı parolaları, API anahtarları ve iç ağ adresleri içeren yapılandırmaları da daha güvenle dönüştürebilirsiniz. Yerel geçmiş yalnızca tarayıcınızın localStorage alanında tutulur ve önbelleği temizlediğinizde silinir.
Authoritative References
- toml-langTOML Resmi Spesifikasyon v1.0
- GitHubTOML GitHub Deposu
- WikipediaTOML - Vikipedi
- Rust ResmiCargo.toml Alan Referansı
- JSON Compress
- CSV'den JSON'a
- JSON'den CSV'ye
- JSON Diff
- JSON Escape / Unescape
- JSON Düzleştirme
- JSON Biçimlendirici
- JSON Oluşturucu
- JSONPath Sorgu
- JSON Birleştir
- JSON Onarımı
- JSON Schema Doğrulayıcı
- JSON Sıralama
- JSON Stringify
- JSON'dan HTML'ye
- JSON'dan Java'ya
- JSON'den Markdown'a
- JSON to SQL
- JSON'dan TOML'e
- JSON'dan TypeScript'e
- XML'den JSON'a
- JSON'u XML'e donustur
- YAML'den JSON'a
- JSON → YAML Dönüştürücü
- JSON'dan Go'ya
- JSON'u Rust'a
- JSON to Swift
- JSON'dan C#'ye
- JSON'dan C++'ya
- JSON'dan PHP'ye
- JSON'u Python'a