XML, JSON'a nasıl dönüştürülür?
- XML'i yapıştırın, bir
.xmldosyasını düzenleyiciye sürükleyin veya bir URL'den yükleyin. JSON siz yazarken görünür. - Öznitelik önekini ve metin anahtarını ayarlayın; her zaman dizi kullanılıp kullanılmayacağına, sayıların ve boolean değerlerin dönüştürülüp dönüştürülmeyeceğine veya ad alanı öneklerinin yok sayılıp sayılmayacağına karar verin.
- JSON'u kopyalayın veya
.jsondosyası olarak indirin.
XML, JSON'a nasıl eşlenir?
| XML | JSON |
|---|---|
<name>Ada</name> | "name": "Ada" |
<price>9.90</price> | "price": 9.90 – rakamlar aynen korunur |
<item id="7">Pen</item> | "item": {"@id": 7, "#text": "Pen"} |
<tag>a</tag><tag>b</tag> | "tag": ["a", "b"] |
<note/> | "note": null |
<![CDATA[a < b]]> | "a < b" metni |
Ad alanı öneklerini yok say açıkken <soap:Body> | "Body" |
“Her zaman dizi kullan” seçeneği neden önemli?
Bir kez geçen öğe tek bir değere dönüşür, ancak iki kez geçtiğinde diziye dönüşür. JSON'u okuyan kodun bu durumda iki yapıyı da işlemesi gerekir – bir liste bazen yalnızca tek öğe içerdiğinde ortaya çıkan klasik bir hata. Her yerde dizi elde etmek için Alt öğeler için her zaman dizi kullan seçeneğini işaretleyin: birkaç ek köşeli parantez karşılığında yapı öngörülebilir olur.
Kodda XML'den JSON'a dönüştürme
- Python:
xmltodict.parse(text)(xmltodict paketi) - JavaScript:
new XMLParser({ ignoreAttributes: false }).parse(text)(fast-xml-parser paketi) - C#:
JsonConvert.SerializeXmlNode(doc)(Newtonsoft.Json) - Komut satırı:
yq -p xml -o json file.xml
Sıkça sorulan sorular
Dönüştürme kayıpsız mı?
Öğe adları, öznitelikler ve metinler korunur; sayıların rakamları da aynen kalır. Yorumlar, işleme yönergeleri ve alt öğeler arasındaki metnin konumu (karma içerik) JSON'da ifade edilemez.
JSON'u tekrar XML'e dönüştürebilir miyim?
Evet. Kardeş sitemiz JSON Formatter'daki JSON'dan XML'e dönüştürücüyü kullanabilirsiniz; bu araç da aynı @ ve #text kurallarını kullanır.
Ad alanlarına ne olur?
soap:Body gibi önekli adlar varsayılan olarak anahtar şeklinde korunur ve xmlns bildirimleri öznitelik olarak görünür. Bildirimler olmadan Body gibi sade adlar elde etmek için Ad alanı öneklerini yok say seçeneğini işaretleyin.
Bir değer neden sayı yerine dize (string) oluyor?
007 veya 1,000 gibi değerler düz ondalık sayı değildir; bu yüzden veri kaybını önlemek için dize olarak kalır. Tüm değerleri dize olarak tutmak için Sayıları ve true/false değerlerini dönüştür seçeneğinin işaretini kaldırın.