Bu Araç Nedir?
XML ve JSON her ikisi de ağaç yapılı veri formatlarıdır, ancak farklı yerlerde karşımıza çıkarlar: eski kurumsal API'ler, SOAP servisleri, RSS/Atom akışları ve birçok yapılandırma formatı hâlâ XML kullanırken, modern REST API'leri ve JavaScript kodu neredeyse tamamen JSON kullanır. Bu araç eski ve yeni sistemleri entegre ederken hiçbirini elle yazmak zorunda kalmamanız için ikisi arasında çeviri yapar.
Dönüşüm, XML okumak için doğrudan tarayıcının DOMParser API'si üzerine kuruludur ve üretim için W3C XML 1.0 spesifikasyonunda tanımlanan yapıyı izler — böylece üretilen XML kurallara uygun (well-formed) olur ve kabul edilen XML bir tarayıcının veya herhangi bir standartlara uygun XML kütüphanesinin ayrıştıracağı şekilde ayrıştırılır.
XML'de JSON'da bulunmayan kavramlar (öznitelikler, karışık metin/eleman içeriği, zorunlu tek bir kök eleman) ve JSON'da XML'de bulunmayan kavramlar (yerel diziler, boolean'lar, sayılar) olduğundan, araç belgelenmiş ve yaygın olarak kullanılan bir kural benimser: bir XML özniteliği `name="value"`, JSON anahtarı `"@_name": "value"` haline gelir; bir elemanın metin içeriği, çocuğu veya özniteliği yoksa elemanın doğrudan string değeri olur, varsa özniteliklerin yanında bir `"#text"` anahtarı olur; aynı etikete sahip tekrarlanan kardeş elemanlar ise bir JSON dizisine dönüşür.
Neden Kullanmalısınız?
- Çift yönlü — aynı ekrandan JSON'u XML'e veya XML'i JSON'a dönüştürün.
- İç içe geçmeyi doğru işler — iç içe geçmiş JSON nesneleri, herhangi bir derinlikte iç içe geçmiş XML elemanlarına dönüşür ve tersi de geçerlidir.
- Diziler tekrarlanan elemanlara eşlenir — bir anahtar altındaki JSON dizisi, aynı etikete sahip o kadar sayıda kardeş XML elemanına dönüşür; tekrarlanan XML etiketleri de geri dönüşte bir JSON dizisi olur.
- XML öznitelikleri korunur — `@_öznitelikAdı` kuralı kullanılarak, öznitelik verileri sessizce kaybolmaz.
- Panoya kopyalayın veya .json ya da .xml dosyası olarak indirin.
- %100 istemci tarafında — yapıştırdığınız hiçbir şey herhangi bir yere yüklenmez.
Nasıl Kullanılır
- Bir yön seçin: "XML → JSON" veya "JSON → XML".
- Verinizi giriş kutusuna yapıştırın.
- "Dönüştür" düğmesine tıklayın.
- Sonucu inceleyin, ardından kopyalayın veya bir dosya kaydetmek için "İndir" düğmesine tıklayın.
Örnek
Giriş
{"user":{"name":"Alice","age":30}}Çıkış
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>JSON'daki tek üst düzey anahtar ("user") XML kök elemanı haline gelir; JSON'da birden fazla üst düzey anahtar varsa, XML tam olarak bir kök eleman gerektirdiğinden araç her şeyi bir <root> elemanının içine sarar.
Pratik ipuçları
- Eski bir XML yapılandırmasını (eski bir uygulamanın ayarlar dosyası gibi) modern bir JSON tabanlı sisteme taşımak: XML'i yapıştırın, dönüştürün ve gerektiğinde alan adlarını düzenleyin.
- JavaScript'ten bir SOAP veya XML-RPC uç noktasını test etmek: göndermeden önce JSON istek verinizi burada XML'e dönüştürün, ya da bir XML yanıtını kolayca incelemek için JSON'a geri dönüştürün.
- JSON'unuz, XML'de tekrarlanan elemanlarla temsil edilecek veriler için dizi kullanıyorsa, XML birden fazla kök eleman içeremediğinden, önce dizinin çıplak bir üst düzey dizi yerine tek bir anahtarın altında iç içe olduğundan emin olun (örneğin {"items":{"item":[1,2,3]}}).
@_ öznitelik kuralı neden önemli
JSON/XML dönüşümünün en zor kısmı, XML elemanlarının aynı anda iki tür veri taşıyabilmesidir — öznitelikler ve alt içerik — oysa düz bir JSON nesnesinde yalnızca anahtarlar ve değerler bulunur. Bunları ayrı tutacak bir kural olmadan, basit bir dönüştürücü ya öznitelikleri tamamen kaybeder ya da onları alt elemanlarla, güvenilir bir şekilde geri dönüştürülemeyecek bir biçimde karıştırır. `@_isim` ön eki kuralı (JavaScript ekosisteminde yaygın olarak kullanılan kütüphaneler tarafından da benimsenmiştir) özniteliklere ayırt edici, belirsizlik içermeyen bir anahtar biçimi vererek bu sorunu çözer; böylece `<product id="42">Widget</product>`, id'yi kaybetmeden veya hangi değerin ne olduğunu yanlış tahmin etmeden `{"product":{"@_id":"42","#text":"Widget"}}` olarak sorunsuzca gidip gelir.
Sıkça Sorulan Sorular
Birden fazla üst düzey anahtara sahip bir JSON'a ne olur?
XML tek bir kök eleman gerektirir, bu yüzden JSON nesnenizde birden fazla üst düzey anahtar varsa (örneğin {"a":1,"b":2}), çıktı bir <root> elemanının içine sarılır: <root><a>1</a><b>2</b></root>. JSON'da tam olarak bir üst düzey anahtar varsa, o anahtar doğrudan kök eleman adı olur.
XML öznitelikleri JSON'da nasıl temsil edilir?
<user id="7"> gibi bir öznitelik, sonuçtaki JSON nesnesinde "@_id": "7" anahtarı haline gelir. Bu, öznitelikleri alt elemanlardan ayırt edilebilir tutan yaygın ve belgelenmiş bir kuraldır (fast-xml-parser gibi kütüphaneler tarafından da kullanılır).
Tekrarlanan XML elemanları bir JSON dizisi haline gelir mi?
Evet. Bir elemanın aynı etiket adına sahip birden fazla çocuğu varsa, örneğin <items><item>1</item><item>2</item></items>, JSON'a dönüştürüldüğünde {"items":{"item":["1","2"]}} üretilir. Bu JSON'u tekrar XML'e dönüştürmek, tekrarlanan <item> elemanlarını yeniden oluşturur.
XML'den JSON'a dönüştürürken sayılar ve boolean'lar korunur mu?
XML'de sayı veya boolean için yerel bir kavram yoktur — her şey metindir — bu yüzden metin içeriği bir JSON string'i olarak gelir (30 yerine "30" gibi). Sayısal türlere ihtiyacınız varsa, bu alanları sonradan dönüştürmeniz gerekir.
Verilerim herhangi bir yere yükleniyor mu?
Hayır. Ayrıştırma ve dönüştürme tamamen tarayıcınızda JavaScript içinde, yerleşik DOMParser API'si kullanılarak gerçekleşir — hiçbir şey bir sunucuya gönderilmez, bu yüzden özel yapılandırma dosyaları veya iç API verileriyle kullanmak güvenlidir.