XML'den JSON'a

XML ve JSON veriyi farklı modeller: XML’in öznitelikleri ve karışık içeriği vardır, JSON’ın nesneleri ve dizileri. Kayıpsız dönüştürmek bir kural gerektirir. Bu araç üç tane sunar: kompakt (öznitelikleri atar), Badgerfish (öznitelikler @key altında, metin $ altında) ve literal (her XML düğümü tam sadakatle bir JSON nesnesine dönüşür). Hedeflediğiniz JSON tüketicisine uyanı seçin.

XML nasıl JSON'a dönüştürülür

  1. 1

    XML yapıştırın

    Herhangi bir iyi biçimli XML. Ad alanları korunur.

  2. 2

    Dönüşüm stilini seçin

    Kompakt, Badgerfish veya literal/kayıpsız.

  3. 3

    Dizileri ele alın

    Belirli öğeleri her zaman dizi olmaya zorlayın (yapılandırılabilir).

  4. 4

    JSON çıktısını kopyalayın

    Düzgün yazdırılmış veya küçültülmüş, sizin seçiminiz.

Üç stil karşılaştırması

Girdi:

<book id="1" lang="en">
  <title>1984</title>
  <author>Orwell</author>
</book>

Kompakt (öznitelikleri atar):

{
  "book": {
    "title": "1984",
    "author": "Orwell"
  }
}

Badgerfish (öznitelikler @ altında, metin $ altında):

{
  "book": {
    "@id": "1",
    "@lang": "en",
    "title": { "$": "1984" },
    "author": { "$": "Orwell" }
  }
}

Literal / JsonML-vari (tam sadakat):

{
  "book": {
    "@attributes": { "id": "1", "lang": "en" },
    "title": "1984",
    "author": "Orwell"
  }
}

Zorunlu diziler

XML’in “bu, bir öğeden oluşan bir listedir” deme yolu yoktur. Tek öğeli bir dizi, bir skalerle aynı görünür:

<items>
  <item>A</item>
</items>

Bu, ya {"item": "A"} ya da {"item": ["A"]} olarak serileştirilebilir. Dönüştürücü, öğe adlarını (XPath ile) her zaman-dizi olarak işaretlemenize izin verir; böylece sonraki JSON tüketiciniz tutarlı türler alır.

Karışık içerik

Karışık içerik, alt öğelerle iç içe metin, herhangi bir XML’den JSON’a dönüşümün bilgi kaybettiği tek yerdir:

<p>Hello <em>world</em>!</p>

Çoğu stil ya metni atar ya da daraltır. Literal stil, sırayı bir dizi aracılığıyla korur:

{
  "p": {
    "@content": ["Hello ", { "em": "world" }, "!"]
  }
}

Tür çıkarımı

Varsayılan olarak değerler dizedir. “Sayısal/boole ayrıştır”’ı açın; dönüştürücü 42, 3.14, true, false’ı eşleşen JSON türlerine dönüştürür. Dikkatli olun: bir XML özniteliği id="007", dönüştürme açıkken 7 olur ki bunu muhtemelen istemezsiniz.

Hangisini ne zaman seçmeli

  • Kompakt: özniteliklerin gürültü olduğu, insan tarafından okunabilir JSON için.
  • Badgerfish: öznitelikleri ve metni çocuklarla aynı derinlikte istediğinizde.
  • Literal: kayıpsız biçimde XML’e geri dönmeniz gerektiğinde.

Sık Sorulan Sorular

Bir öğe bir kez göründüğünde dönüştürücü varsayılan olarak nesneye geçer; iki veya daha fazla kez göründüğünde diziye. Tüketiciniz tek bir şekil bekliyorsa tutarlı yapmak için diziye-zorla seçeneğini kullanın.

Ad alanı önekleri, “ad alanlarını kaldır”’ı etkinleştirmediğiniz sürece anahtarlarda korunur (ns:title). Bildirimlerin kendisi, kök öğede @xmlns:ns öznitelikleri olur.

Literal mod kayıpsıza en yakın olanıdır ama öğeler ve metin arasındaki karışık içerik sıralaması zordur. Kompakt mod kesinlikle öznitelikleri kaybeder. Badgerfish pragmatik bir orta yoldur.

Hayır. Dönüşüm tarayıcınızda çalışır.

İlgili Araçlar

Araç diğer dillerde mevcuttur