JSON till XML

Klistra in ett JSON-dokument och få tillbaka XML-motsvarigheten med namnet på det rotelement du väljer, en konsekvent strategi för arrayer (upprepade element eller en omslutare), valfri XML-deklaration och snygg indragning. Användbart när ett äldre system kräver XML och din uppströmsdata finns som JSON.

Så konverterar du JSON till XML

  1. 1

    Klistra in JSON

    Objekt eller array på toppnivå. Du ger rotelementet ett namn.

  2. 2

    Namnge roten

    XML kräver ett enda rotelement. Standard är `<root>`; ge det något meningsfullt som `<users>` eller `<response>`.

  3. 3

    Välj arraystrategi

    "Upprepade element" (varje arrayobjekt blir ett syskon-`<item>`) eller "omslutare" (arrayen läggs inuti ett namngivet omslutarelement).

  4. 4

    Kopiera XML:en

    Valfri XML-deklaration, korrekt indragning och entitetsescapade värden för `<`, `>`, `&` och citattecken.

Exempel: upprepade element

Inmatning:

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

Utdata:

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

Exempel: arrayomslutare

Samma inmatning med strategin “linda arrayer i <item>”:

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

Typmappning

JSON XML
sträng textinnehåll, entitetsescapat
heltal / decimal textinnehåll (ingen XML-typannotering)
boolean true / false som text
null tomt element (<foo/>) eller utelämnat
array upprepade element eller omslutare + objekt
objekt nästlat element med barnelement

Attribut mot element

XML skiljer attribut (<user id="1">) från barnelement (<user><id>1</id></user>). Konverteraren använder element som standard, de är förlustfria vid tur-och-retur. Om din nedströms-XML kräver attribut, använd en nyckelprefixkonvention:

  • JSON-nyckeln @id blir ett XML-attribut id="..." på föräldraelementet.
  • JSON-nyckeln #text blir textinnehållet i föräldraelementet.

Dessa konventioner kommer från BadgerFish- och Parker-mappningarna, de två vanligaste JSON-till-XML-standarderna.

Escaperegler

  • < -> &lt;
  • > -> &gt;
  • & -> &amp;
  • " -> &quot; (i attributvärden)
  • ' -> &apos; (valfritt)
  • Byte i UTF-8 bevaras, deklarerade i XML-prologen.

Vanliga misstag

  • JSON-array på rotnivå. XML behöver ett enda rotelement. Konverteraren lindar en array i <root> (eller vilket namn du nu väljer).
  • Numeriska nycklar. JSON {"1": "a"} är giltig; XML-elementnamn kan inte börja med en siffra. Konverteraren prefixar siffror med ett understreck (_1) eller låter dig definiera en egen mappning.
  • Blandade arrayer. [1, "two", { "x": true }] har ingen ren mappning. Oftast betyder det att JSON:en behöver normaliseras före konvertering.
  • Enorma dokument. XML är pratigt, en 10 MB JSON kan bli en 20-30 MB XML. Överväg strömmande konvertering för mycket stora laster.

Vanliga frågor

XML kräver en enda rot enligt specifikationen. Om din JSON är en array eller har flera toppnivånycklar lindar konverteraren allt i ett rotelement som du kan namnge (standard <root>).

Ja. Använd @-prefixkonventionen i dina JSON-nycklar (t.ex. "@id": 1) så blir de nycklarna attribut. Övriga nycklar förblir barnelement. Detta matchar BadgerFish-mappningen.

Två strategier: upprepade syskonelement (varje objekt får föräldranyckeln som sin tagg), eller en omslutare med <item>-element inuti. Välj den som matchar XML-schemat du siktar på.

Nej. Konverteraren matar ut XML-deklarationen (<?xml version="1.0"?>) men inte en DOCTYPE. För XML som behöver en DTD- eller XSD-referens, lägg till den manuellt efter konverteringen.

Relaterade verktyg

Verktyget finns på andra språk