Cihazınızda çalışır · Dosyanız cihazınızdan asla çıkmaz.
JSON yapıştırın ya da bırakın; üstte bildirim ve her anahtar için bir öğe içeren bir XML belgesi alın. En üstte tek anahtar bulunan bir belgede o anahtar kök öğe olur; diğer her şey <root> içine girer. Liste, anahtarının adını taşıyan yinelenen öğeler olur: "items": [..] birkaç <items> öğesi verir; en üst düzeydeki liste <root> altında <item> öğeleri olur.
@ ile başlayan anahtarlar öznitelik, "#text" anahtarı da öğenin metni olur; bu, XML’den JSON’a aracının yazdığı biçimdir, yani orada dönüştürülen bir belge burada aynı XML olarak geri gelir. Diğer her değer öğesinin içinde metindir, null boş öğe olur ve belge her düzeyde iki boşlukla girintilenir. XML’in ad olarak kabul etmediği anahtarlar (rakamla başlayan, boşluk ya da simge içeren) alt çizgiyle temizlenir; sonuç her zaman ayrıştırılır.
Metin doğru kaçışlanır (&, <, > ve özniteliklerde tırnaklar ile satır sonları); XML 1.0’ın hiç tutamadığı denetim karakterleri çıkarılır. Kodlama UTF-8’dir ve indirmeden önce ilk 200 satırı görürsünüz. Hiçbir şey yüklenmez.
Şunlar için uygun değildir: Belirli bir XML şemasına uymak (SOAP, RSS, e-Fatura gibi bir standart): öğe adları bir şemadan değil, JSON anahtarlarınızdan gelir.
@ ile başlayan bir anahtar öznitelik olur, "#text" anahtarı da öğenin metni; {"item": {"@id": 3, "#text": "A"}} <item id="3">A</item> verir. Belgenin en üstünde tek bir anahtar varsa o anahtar kök öğe olur; yoksa her şey <root> içine girer.
XML’in bir adda izin vermediği karakter alt çizgiye dönüşür; ilk karakter olarak izin verilmeyen bir karakterle, örneğin bir rakamla başlayan adın önüne de bir alt çizgi eklenir: "1st place" <_1st_place> olur. İki nokta üst üste ancak öneki daha yukarıda bildirilmişse korunur, "@xmlns:soap" gibi; bildirilmemiş bir "soap:Body" <soap_Body> olur, çünkü ad alanlarını tanıyan hiçbir ayrıştırıcı onu başka türlü okuyamazdı. Her yazı sisteminin harflerine izin verilir; "şehir", "اسم" ya da "名前" gibi bir anahtar yazıldığı gibi kalır.
Her değer metin olarak yazılır, sayılar da tam JSON’daki gibi: 1.0 yine 1.0 kalır ve 12345678901234567890 her basamağını korur. null ve boş nesne, ikisi de <note/> gibi boş bir öğe olur; boş liste ise hiçbir şey yazmaz. Yani XML bu üçünü birbirinden ayıramaz.
Denetim karakterleri, yani sekme, satır besleme ve satır başı dışında kodu 32’nin altında kalanlar, XML 1.0’da hiçbir şekilde yazılamaz,  gibi bir sayı olarak bile; bu yüzden çıkarılırlar. Satır başı, ayrıştırıcı onu korusun diye olarak yazılır. Öznitelik değerlerinde tırnaklar, sekmeler ve satır sonları da başvuru olarak yazılır, çünkü ayrıştırıcı aksi hâlde onları boşluğa çevirirdi.
Yinelenen öğeler yalnızca tek bir liste düzeyini ifade edebilir. "m": [[1, 2], [3]] 1, 2 ve 3’ü taşıyan üç <m> öğesi olur ve 1 ile 2’nin bir arada olduğu bilgisi kaybolur. En üst düzeydeki liste de aynı şekilde davranır: [1, [3, 4]] üç <item> öğesi verir. Gruplama önemliyse her iç listeyi önce bir nesneye sarın: [{"values": [1, 2]}, {"values": [3]}], her biri kendi <values> öğelerini taşıyan iki <item> öğesi verir.
XML’den JSON’a (/xml-to-json) aracından geçmiş bir belge aynı öğeler, öznitelikler, ad alanı önekleri ve metinle, çevresinde fazladan bir sarmalayıcı olmadan geri gelir. JSON’un hiç tutmadığı şeyler geri gelmez: yorumlar ve DOCTYPE, alt öğeler arasındaki metnin konumu ve farklı adlı öğeler arasındaki sıra; bu öğeler adlarına göre gruplanmış olarak döner. XML’den JSON’a aracında tür tanıma açıksa TRUE gibi bir değer true olarak geri gelir; harfi harfine bir gidiş-dönüş için orada tanımayı kapatın.
Tablolar ve veriler içinde daha fazlası
Bu sayfa diğer dillerde: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা