JSON'ten XML'e

Bir JSON belgesi yapıştırın; seçtiğiniz kök öğe adıyla, diziler için tutarlı bir stratejiyle (tekrarlanan öğeler veya bir sarmalayıcı), isteğe bağlı XML bildirimiyle ve düzgün girintilemeyle XML karşılığını alın. Eski bir sistem XML isterken kaynak verileriniz JSON biçiminde tutuluyorsa oldukça işe yarar.

JSON'ı XML'e nasıl dönüştürürsünüz?

  1. 1

    JSON'u yapıştırın

    En üst düzeyde bir nesne veya dizi. Kök öğeye bir ad vereceksiniz.

  2. 2

    Kökü adlandırın

    XML tek bir kök öğe gerektirir. Varsayılan değer `<root>`'tur; `<users>` veya `<response>` gibi anlamlı bir ad verin.

  3. 3

    Dizi stratejisini seçin

    "Tekrarlanan öğeler" (her dizi öğesi bir kardeş `<item>`'e dönüşür) veya "sarmalayıcı" (dizi, adlandırılmış bir sarmalayıcı öğenin içine yerleştirilir).

  4. 4

    XML'i kopyalayın

    İsteğe bağlı XML bildirimi, düzgün girintileme ve `<`, `>`, `&` ile tırnak işaretleri için varlık kaçışlı değerler.

Örnek: tekrarlanan öğeler

Giriş:

{ "users": [ { "name": "Alice" }, { "name": "Bob" } ] }

Çıkış:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <users>
    <name>Alice</name>
  </users>
  <users>
    <name>Bob</name>
  </users>
</root>

Örnek: dizi sarmalayıcı

“dizileri <item> içine sarma” stratejisiyle aynı girdi:

<root>
  <users>
    <item>
      <name>Alice</name>
    </item>
    <item>
      <name>Bob</name>
    </item>
  </users>
</root>

Tür Haritalaması

JSON XML
dize metin içeriği, varlık kaçışlı
tam sayı / ondalık metin içeriği (XML tip ek açıklaması yok)
boole true / false metin olarak
null boş öğe (<foo/>) veya atlanır
dizi tekrarlanan öğeler veya sarmalayıcı + öğeler
nesne alt öğeler içeren iç içe öğe

Öznitelikler vs öğeler

XML, öznitelikleri (<user id="1">) alt öğelerden (<user><id>1</id></user>) ayırt eder. Dönüştürücü varsayılan olarak öğeleri kullanır; öğeler gidiş-dönüş dönüşümünde kayıpsızdır. Sonraki aşamadaki XML’iniz öznitelik gerektiriyorsa anahtar ön ek kuralını kullanın:

  • JSON anahtarı @id, üst öğede id="..." adlı bir XML özniteliğine dönüşür.
  • JSON anahtarı #text, üst öğenin metin içeriği olur.

Bu kurallar, en yaygın iki JSON’dan XML’e standardı olan BadgerFish ve Parker eşlemelerinden gelir.

Kaçış kuralları

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • " -> &quot; (öznitelik değerlerinde)
  • ' -> &apos; (isteğe bağlı)
  • UTF-8’deki baytlar korunur ve XML prologunda bildirilir.

Yaygın hatalar

  • Kök düzeyinde bir JSON dizisi. XML tek bir kök öğe gerektirir. Dönüştürücü diziyi <root> (veya seçtiğiniz herhangi bir ad) içine sarar.
  • Sayısal anahtarlar. JSON {"1": "a"} geçerlidir; XML öğe adları bir rakamla başlayamaz. Dönüştürücü, rakamların önüne alt çizgi ekler (_1) ya da özel bir eşleme tanımlamanıza olanak tanır.
  • Karışık diziler. [1, "two", { "x": true }] için temiz bir eşleme yoktur. Bu genellikle JSON’un dönüştürülmeden önce normalleştirilmesi gerektiği anlamına gelir.
  • Devasa belgeler. XML ayrıntılıdır; 10 MB’lık bir JSON, 20-30 MB’lık bir XML’e dönüşebilir. Çok büyük yükler için akışlı dönüştürmeyi değerlendirin.

Sık Sorulan Sorular

XML, belirtim gereği tek bir kök öğe gerektirir. JSON’unuz bir dizi ise veya birden fazla üst düzey anahtar içeriyorsa, dönüştürücü her şeyi adlandırabileceğiniz bir kök öğenin içine sarar (varsayılan <root>).

Evet. JSON anahtarlarınızda @ ön ek kuralını kullanın (örneğin "@id": 1); bu anahtarlar özniteliklere dönüşür, diğer anahtarlar alt öğe olarak kalır. Bu, BadgerFish eşlemesiyle uyumludur.

İki strateji vardır: tekrarlanan kardeş öğeler (her öğe, etiketi olarak üst anahtarı alır) veya içinde <item> öğeleri bulunan bir sarmalayıcı. Hedeflediğiniz XML şemasına uyan hangisiyse onu seçin.

Hayır. Dönüştürücü XML bildirimini (<?xml version="1.0"?>) üretir ancak DOCTYPE üretmez. DTD veya XSD referansı gereken XML için bunu dönüştürmeden sonra elle ekleyin.

İlgili Araçlar

Araç diğer dillerde mevcuttur