JSON'dan XML'e
JSON verisini XML belgesine çevirin; kök adını siz seçin, geçersiz anahtarlar güvenli ada uyarlansın
Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.
Bu araç işinizi gördü mü?
Teşekkürler, geri bildiriminiz alındı.
Nasıl çalışır?
JSON metnini sol panele yapıştırın; XML çıktısı siz yazarken sağ panelde belirir. XML tek bir kök eleman zorunlu kıldığı için JSON'un tamamı sizin yazdığınız kök adıyla sarılır: varsayılan 'root' işinizi görür, ama bir sipariş belgesi hazırlıyorsanız 'siparis' yazmanız çıktıyı doğrudan kullanılır hâle getirir. Nesne anahtarları eleman adına, diziler ise seçtiğiniz öğe adıyla alt alta yazılan elemanlara döner: 'urunler' dizisi ya <item> öğeleriyle ya da kapsayan alanın tekiliyle (<urun>) çıkar. XML eleman adı rakamla başlayamaz, boşluk ve parantez taşıyamaz; '2024 yılı' gibi bir anahtar sessizce bozulmaz, '_2024_yılı' hâline getirilir ve kaç anahtarın uyarlandığı, hangisinin neye döndüğü sonuç satırında yazılır. Metinlerdeki & < > " ' işaretleri kaçışlanır, null değer boş elemana (<x/>) iner, boş metin ise <x></x> olarak korunur — ikisi ayrı şeydir. JSON geçerli değilse hangi satırın hangi sütununda takıldığınız Türkçe olarak söylenir. Çıktıyı tek tıkla kopyalayabilir veya .xml dosyası olarak indirebilirsiniz.
Bu araç json to xml aramalarıyla da biliniyor.
XML eleman adı nedir?
Eleman adı, açılı ayraçların arasına yazılan ve veriyi adlandıran sözcüktür: <fiyat> elemanının adı 'fiyat'tır. Adın kuralları dardır ve pazarlık kabul etmez: harf veya alt çizgiyle başlar, içinde boşluk bulunmaz, rakamla başlayamaz ve parantez, eğik çizgi, yüzde gibi işaretleri taşıyamaz. Rakam, tire ve nokta adın devamında serbesttir, yani 'fiyat-2024' geçerlidir ama '2024-fiyat' değildir. Türkçe harfler kural dışı değildir; 'ürün' de 'çeyrek' de geçerli eleman adıdır. Bu yüzden bir JSON anahtarı XML'e geçerken çoğu zaman değil, ama boşluk ya da rakamla başlıyorsa mutlaka uyarlanmak zorundadır.
Kök eleman (root element) nedir?
Kök eleman, bir XML belgesinin en dışındaki ve tek olan elemandır; belgedeki bütün veri onun içinde durur. XML'in bu tek kök kuralı biçimseldir ama sonuçları günlüktür: iki nesneyi alt alta yapıştırıp XML dosyası yapamazsınız, ikisini saran bir eleman eklemek zorundasınız. JSON'da böyle bir zorunluluk yoktur, bir dizi tek başına geçerli bir belgedir. Dönüşümde kök adını siz yazarsınız çünkü doğru ad veriye bağlıdır: fatura belgesinde 'fatura', ürün listesinde 'urunler' beklenir ve alıcı sistem çoğu zaman bu adı adıyla arar.
JSON ile XML arasındaki fark bu dönüşümde nereye çıkar?
Fark, dönüşümün üç kararında somutlaşır. Birincisi kök: JSON istediği yerden başlayabilir, XML tek bir tepe eleman ister — bu yüzden ekranda sizden bir kök adı istenir. İkincisi liste: JSON'da köşeli parantez listeyi kendi başına anlatır, XML'de liste ancak tekrarlanan kardeş elemanlarla anlatılır, dolayısıyla o elemanların adına karar vermek gerekir ve bu ad çıktının okunurluğunu belirler. Üçüncüsü tür: JSON sayıyı, metni ve mantıksal değeri birbirinden ayırır, XML'de her şey metindir ve tür bilgisi ancak dışarıdan bir şemayla (XSD) gelir; yani 1024 ile "1024" arasındaki ayrım bu dönüşümde kaybolur. Buna karşılık XML'in kazandırdığı bir şey vardır: öznitelik, ad alanı ve şema doğrulaması gibi belgeyi resmîleştiren araçlar. Kamu ve kurumsal entegrasyonların hâlâ XML istemesinin sebebi de budur.
Neden bir kök eleman adı yazmanız isteniyor?
JSON bir nesneyle de dizyle de başlayabilir; XML ise bunu kabul etmez. Her XML belgesinde tepede tek bir eleman bulunmak zorundadır, ikinci bir tepe eleman belgeyi geçersiz kılar. Bu yüzden JSON'unuz ne olursa olsun tamamı tek bir elemanın içine alınır ve o elemanın adını siz verirsiniz.
Adı işinize göre seçin: çıktıyı bir sisteme vereceksiniz ve o sistem <siparisler> bekliyorsa kutuyu 'siparisler' yapın. Yazdığınız ad da eleman adı kurallarına uyarlanır — 'sipariş listesi' yazarsanız çıktıda 'sipariş_listesi' görürsünüz, çünkü XML eleman adında boşluk yoktur.
Dizi tuzağı: XML'de 'liste' diye bir tür yoktur
JSON'da köşeli parantez tek başına 'burası bir listedir' der. XML'de böyle bir işaret yoktur; liste, aynı adı taşıyan kardeş elemanların art arda gelmesiyle anlatılır. Dönüşümün en çok tartışılan kararı da budur: o kardeş elemanların adı ne olacak?
İki seçenek de yaygın: sabit bir 'item' adı her dizide aynı görünür ve makine tarafında okuması kolaydır; kapsayan alanın tekili ise belgeyi insan için okunur kılar ('urunler' içinde 'urun'). Tekil türetilemeyen adlarda (örneğin 'data') araç item'a döner, çünkü <data><data> okuyanı yanıltır.
Bunun bir sonucu var: tek elemanlı bir diziyi XML'e çevirip geri okuduğunuzda elinizde dizi değil tek nesne olur. XML'in kendisinde 'burası her zaman listedir' bilgisi yoktur, bu ancak şemadan (XSD) gelir. Çıktıyı bir kodda kullanacaksanız o alanı okurken tek eleman ihtimalini de karşılayın.
Geçersiz anahtar adları sessizce bozulmaz
XML eleman adı için kurallar dardır ve JSON anahtarları çoğu zaman bu kuralları çiğner. Araç adı uyarlar, kaç tanesini uyarladığını ve hangisinin neye döndüğünü sonuç satırında söyler; böylece çıktıyı gözden geçirirken sürprizle karşılaşmazsınız.
- Rakamla başlayan ad → başına alt çizgi: '2024' → '_2024' (baştaki rakamı atmak veriyi bozardı)
- Boşluk, parantez, eğik çizgi ve diğer izinsiz işaretler → alt çizgi: 'fiyat (TL)' → 'fiyat__TL_'
- İki nokta üst üste de alt çizgiye döner: olmayan bir ad alanı (namespace) önekine gönderme yapılmaz
- 'xml' ile başlayan adlar standartta ayrılmıştır → başına alt çizgi konur
- Boş anahtar ('') → 'alan' adını alır, kök için 'root' kullanılır
- Türkçe harfler olduğu gibi kalır: 'ürün' geçerli bir XML eleman adıdır, uyarlanmaz
Kapsam sınırları: öznitelik, ad alanı ve şema
Bu araç JSON'un veri modelini elemanlara çevirir; XML'in eleman dışındaki yapılarını kendiliğinden üretmez. Sınırlar burada açıkça yazılıdır:
- Öznitelik (attribute) üretilmez: her anahtar bir eleman olur, <urun kod="TR-11"> gibi bir çıktı istiyorsanız XML'i elle düzenlemeniz gerekir
- Ad alanı (namespace) bildirimi eklenmez; xmlns gerektiren bir belge hazırlıyorsanız kök elemana kendiniz yazarsınız
- Şema (XSD) veya DTD üretilmez; çıktı iyi biçimli XML'dir, ama 'geçerli' olup olmadığı hedef şemaya göre ayrıca denetlenir
- Sayı ve mantıksal değerler metin olarak yazılır: XML'de tür bilgisi yoktur, true ile "true" arasındaki farkı yalnızca şema taşır
- XML'in hiç kabul etmediği denetim karakterleri atılır ve kaç tane atıldığı sonuç satırında bildirilir
Sık sorulanlar
JSON'daki anahtar adları neden değiştiriliyor?
XML eleman adı rakamla başlayamaz, boşluk ve çoğu noktalama işaretini taşıyamaz. Bu kuralları çiğneyen bir anahtar olduğu gibi yazılsaydı belge ayrıştırılamazdı. Araç adı geçerli hâle getirir ve kaç anahtarın nasıl değiştiğini sonuç satırında yazar; hiçbir değişiklik sessizce yapılmaz.
Öznitelikli (attribute) XML üretebilir miyim?
Hayır, her JSON anahtarı bir eleman olur. Bunun sebebi JSON'da öznitelik kavramının bulunmamasıdır: hangi alanın öznitelik olacağını yalnızca hedef şema bilir. Öznitelik gerekiyorsa çıktıyı indirip ilgili satırları elle düzenlemeniz gerekir.
Tek elemanlı diziyi çevirip geri okuduğumda neden dizi çıkmıyor?
XML'de tek başına duran bir eleman ile tek elemanlı bir liste aynı görünür; ayrımı yalnızca şema (XSD) taşır, o da bu çıktıda yoktur. Listelerin her koşulda dizi kalmasını istiyorsanız çıktıyı okuyan tarafta o alan için dizi denetimi yapın.
Yapıştırdığım JSON bir sunucuya gönderiliyor mu?
Hayır. Ayrıştırma ve XML üretimi tamamen tarayıcınızın içinde yapılır; müşteri kaydı, sipariş dökümü ya da API cevabı yapıştırsanız bile veri bu sayfadan çıkmaz ve hiçbir yere kaydedilmez.