XML ⇄ JSON

Herhangi bir biçimi yapıştırın — diğeri yazdıkça belirir, iki yönde de.

Nasıl kullanılır

  1. Kutuya XML veya JSON yapıştırın — sonuç yazdıkça çizilir, basılacak bir düğme yoktur. Yön, ilk karakterden (< XML için, [ veya { JSON için) algılanır ve sonucun üstünde gösterilir, böylece kontrol edebilirsiniz.
  2. Yön yanlış tahmin edildiyse XML → JSON ya da JSON → XML seçin. Aşağıdaki seçenekler yöne göre değişir: XML → JSON “Sayıları ve boolean’ları algıla” gösterir ve JSON → XML dizileri sarmak için “Kök adı”nı gösterir.
  3. Sonucu kopyalayın veya indirin. İkisi de ekranda gördüğünüz tam metni kullanır; dosya data.json veya data.xml olarak adlandırılır. “Örneği yükle”, etkin yöne göre bir örnek doldurur.

Örnek

Giriş (XML)

<note id="1"><to>Alice</to><from>Bob</from><body>Hi!</body></note>

Çıkış (JSON)

{
  "note": {
    "@id": "1",
    "to": "Alice",
    "from": "Bob",
    "body": "Hi!"
  }
}

id niteliği “@id” olur, her alt öğe bir anahtar olur ve <body> içindeki metin bir dize değeri olur. id dahil her değeri metin olarak tutmak için “Sayıları ve boolean’ları algıla” seçeneğini kapatın.

Kurallar, sınırlar ve bilinen sorunlar

  • Dosya yükleme, sürükle-bırak veya URL getirme yok: metni yapıştırın. Bir bırakma bölgesi sonucun ihtiyaç duyduğu yüksekliği yer; dosyaları düzgün okumak UTF-8 dışı kodlamaları işlemek demektir — dosyayı XML biçimlendiricide açın (GB18030, Big5, Windows-1256) ve metni kopyalayın.
  • Giriş 1.000.000 karakterle sınırlıdır; 200.000 üzerinde yazmayı bırakınca sonuç bekler ve bunu belirtir. Sert sınırın üzerinde açık bir hata alırsınız — giriş asla sessizce kısaltılmaz.
  • Eşleme kasıtlı olarak sabittir: bir öğe bir nesneye dönüşür; bir nitelik “@name” olur; öğe metni “#text” olur; bir alt öğe bir anahtar olur; aynı ada sahip birden çok alt öğe bir dizi olur. Yalnızca metin içeren bir yaprak öğe çıplak bir dizeye dönüşür, böylece derinden iç içe geçmiş bir belge okunabilir kalır.
  • Tip algılama (XML → JSON) muhafazakârdır: yalnızca true / false / null (sadece küçük harf) ve katı JSON sayıları gerçek tiplere dönüştürülür. Başında sıfır olan bir tam sayı (00501) ile 16 veya daha uzun haneli bir sayı dize olarak kalır; seçenek kapalıyken diğer her şey metin olarak kalır. Nitelikler her zaman metin olarak tutulur, asla yeniden tiplendirilmez, çünkü XML nitelikleri metinseldir.
  • JSON → XML tek bir kök ister, bu yüzden üst düzey bir nesne tek anahtarını kök öğe olarak kullanır. Bir üst düzey JSON dizisinin tek bir kökü yoktur ve “Kök adı” öğesiyle sarılır, her öğe yinelenen bir alt öğeye dönüşür (varsayılan olarak “item” adıyla).
  • Bir anahtar altındaki JSON değeri bir nesne, dizi, dize, sayı, true / false veya null olabilir. “@name” anahtarları nitelik olur (null / undefined atlanır); “#text” öğe metni olur; diğer her anahtar bir alt öğe olur. Diziler yinelenen öğeler üretir.
  • XML yorumları, işlem talimatları (<? … ?>) ve DOCTYPE silinir ve sayılır (JSON’da temsil edilemezler); CDATA metin olarak tutulur. Karışık içerik — alt öğelerin yanında duran metin — “#text” içine düzleştirilir ve özgün sırası korunmaz; etkilenen öğeler sayılır, böylece görebilirsiniz.
  • JSON katı biçimde ayrıştırılır: yorum yok, sondaki virgül yok, tek tırnak yok, kaçışlanmamış kontrol karakteri yok, en fazla 64 seviye iç içe geçme. Satır başına bir nesne (JSON Lines) kabul edilmez — önce nesneleri bir diziye sarın.
  • XML varlık başvuruları (&amp; &lt; &gt;) metin ve niteliklerde birebir korunur (kod çözülmez), böylece bir gidiş-dönüş tam baytları üretir. Kaçışlama JSON → XML tarafında eklenir: metinde & < > kaçışlanır ve nitelik değerlerinde “ kaçışlanır.
  • Kapsam dışı: XSLT, XPath, XML Şeması doğrulama, ad alanları (etiket adının bir parçası olmanın ötesinde bir anlam taşıması), yinelenen anahtarlı JSON (JSON.parse gibi sonuncusu kazanır) ve yorum sırasının korunması. Hiçbir şey yüklenmez, saklanmaz veya URL’ye konulmaz.

Veri diğer biçime girdiğinde kullanıcıların genellikle sıradaki ihtiyacı.