XML till JSON

XML och JSON modellerar data olika: XML har attribut och blandat innehåll, JSON har objekt och arrayer. Att omvandla utan förlust kräver en konvention. Det här verktyget erbjuder tre: kompakt (tar bort attribut), Badgerfish (attribut under @key, text under $) och literal (varje XML-nod blir ett JSON-objekt med full trohet). Välj den som matchar den JSON-konsument du riktar in dig på.

Så omvandlar du XML till JSON

  1. 1

    Klistra in XML

    Valfri välformad XML. Namnrymder bevaras.

  2. 2

    Välj omvandlingsstil

    Kompakt, Badgerfish eller literal/förlustfri.

  3. 3

    Hantera arrayer

    Tvinga vissa element att alltid vara arrayer (konfigurerbart).

  4. 4

    Kopiera JSON-utdatan

    Snyggt formaterad eller minifierad, ditt val.

De tre stilarna jämförda

Indata:

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

Kompakt (tar bort attribut):

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

Badgerfish (attribut under @, text under $):

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

Literal / JsonML-aktig (full trohet):

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

Tvingade arrayer

XML har inget sätt att säga “det här är en lista med ett element”. En sekvens med ett enda element ser identisk ut med en skalär:

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

Det kan serialiseras antingen som {"item": "A"} eller {"item": ["A"]}. Omvandlaren låter dig markera elementnamn (med XPath) som alltid-arrayer, så att din nedströms JSON-konsument får konsekventa typer.

Blandat innehåll

Blandat innehåll, text invävd med barnelement, är det enda stället där varje XML-till-JSON-omvandling tappar information:

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

De flesta stilar tar antingen bort text eller slår ihop den. Den literala stilen bevarar ordningen via en array:

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

Typinferens

Som standard är värden strängar. Slå på “tolka numeriskt/booleskt” så castar omvandlaren 42, 3.14, true, false till motsvarande JSON-typer. Var försiktig: ett XML-attribut id="007" blir 7 med casting på, vilket du förmodligen inte vill.

När du ska välja vilken

  • Kompakt: för människoläsbar JSON där attribut är brus.
  • Badgerfish: när du behöver attribut och text på samma djup som barn.
  • Literal: när du måste kunna konvertera tillbaka till XML utan förlust.

Vanliga frågor

När ett element förekommer en gång använder omvandlaren objekt som standard; två gånger eller fler, array. Använd alternativet tvinga-array för att göra det konsekvent om din konsument förväntar sig en form.

Namnrymdsprefix bevaras i nycklar (ns:title) om du inte aktiverar “ta bort namnrymder”. Själva deklarationerna blir @xmlns:ns-attribut på rotelementet.

Literal-läget ligger närmast förlustfritt men ordningen i blandat innehåll mellan element och text är knepig. Kompakt läge tappar definitivt attribut. Badgerfish är en pragmatisk medelväg.

Nej. Omvandlingen körs i din webbläsare.

Relaterade verktyg

Verktyget finns på andra språk