CodeKitHub
JSON-verktyg

JSON ↔ XML-konverterare

Senast uppdaterad:

För att konvertera JSON till XML blir varje nyckel en elementtagg och varje värde dess textinnehåll — nästlade objekt blir nästlade element, arrayer blir upprepade syskonelement, och XML-attribut mappas till `@_namn`-nycklar i JSON så att rundturen förblir förlustfri. Det här verktyget gör den konverteringen, i båda riktningarna, helt i din webbläsare.

Vad är detta verktyg?

XML och JSON är båda trädformade dataformat, men de dyker upp på olika ställen: äldre företags-API:er, SOAP-tjänster, RSS/Atom-flöden och många konfigurationsformat talar fortfarande XML, medan moderna REST-API:er och JavaScript-kod nästan uteslutande talar JSON. Det här verktyget översätter mellan de två så att du slipper skriva någotdera för hand när du integrerar gamla och nya system.

Konverteringen bygger direkt på webbläsarens DOMParser-API för att läsa XML, och följer strukturen som definieras av W3C XML 1.0-specifikationen för att producera den — så XML:en den genererar är välformad och den XML den accepterar tolkas på samma sätt som en webbläsare eller vilket standardkompatibelt XML-bibliotek som helst skulle tolka den.

Eftersom XML har begrepp som JSON inte har (attribut, blandat text-/elementinnehåll, ett obligatoriskt enda rotelement) och JSON har begrepp som XML inte har (inbyggda arrayer, booleaner, tal), använder verktyget en dokumenterad, allmänt använd konvention: ett XML-attribut `namn="värde"` blir JSON-nyckeln `"@_namn": "värde"`, elementets textinnehåll blir antingen elementets direkta strängvärde (när det saknar barn eller attribut) eller en `"#text"`-nyckel vid sidan av eventuella attribut, och upprepade syskonelement med samma tagg blir en JSON-array.

Varför använda det?

  • Dubbelriktad — konvertera JSON till XML eller XML till JSON från samma skärm.
  • Hanterar nästling korrekt — nästlade JSON-objekt blir nästlade XML-element och vice versa, på valfritt djup.
  • Arrayer mappas till upprepade element — en JSON-array under en nyckel blir lika många syskon-XML-element med samma tagg, och upprepade XML-taggar kommer tillbaka som en JSON-array.
  • XML-attribut bevaras — med konventionen `@_attributnamn`, så attributdata tappas inte tyst bort.
  • Kopiera till urklipp eller ladda ner som en .json- eller .xml-fil.
  • 100% klientsidan — inget du klistrar in laddas upp någonstans.

Så använder du det

  1. Välj en riktning: "XML → JSON" eller "JSON → XML".
  2. Klistra in din data i inmatningsrutan.
  3. Klicka på "Konvertera".
  4. Granska resultatet, kopiera det sedan eller klicka på "Ladda ner" för att spara en fil.

Exempel

Inmatning

{"user":{"name":"Alice","age":30}}

Resultat

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Alice</name>
  <age>30</age>
</user>

Den enda toppnivånyckeln ("user") i JSON blir XML-rotelementet; om JSON:en har fler än en toppnivånyckel omsluter verktyget allt i ett <root>-element eftersom XML kräver exakt ett rotelement.

Praktiska tips

  • Migrerar du en äldre XML-konfiguration (som en gammal apps inställningsfil) till ett modernt JSON-baserat system: klistra in XML:en, konvertera, och justera fältnamn efter behov.
  • Testar du en SOAP- eller XML-RPC-slutpunkt från JavaScript: konvertera din JSON-förfrågan till XML här innan du skickar den, eller konvertera ett XML-svar tillbaka till JSON för att enkelt granska det.
  • Om din JSON använder arrayer för data som XML skulle representera som upprepade element, se till att arrayen är nästlad under en enda nyckel först (t.ex. {"items":{"item":[1,2,3]}}) istället för en bar toppnivåarray, eftersom XML inte kan ha flera rotelement.

Varför @_-attributkonventionen spelar roll

Den knivigaste delen av JSON/XML-konvertering är att XML-element kan bära två sorters data samtidigt — attribut och barninnehåll — medan ett vanligt JSON-objekt bara har nycklar och värden. Utan en konvention för att hålla dessa åtskilda skulle en naiv konverterare antingen tappa attribut helt eller blanda ihop dem med barnelement på ett sätt som inte går att konvertera tillbaka pålitligt. Konventionen med `@_namn`-prefix (som också används av allmänt spridda bibliotek i JavaScript-ekosystemet) löser detta genom att ge attribut en distinkt, entydig nyckelform, så att `<product id="42">Widget</product>` går fram och tillbaka korrekt som `{"product":{"@_id":"42","#text":"Widget"}}` istället för att tappa id:t eller gissa fel vilket värde som var vilket.

Vanliga frågor

Vad händer med JSON som har fler än en toppnivånyckel?

XML kräver ett enda rotelement, så om ditt JSON-objekt har flera toppnivånycklar (t.ex. {"a":1,"b":2}) omsluts utdatan i ett <root>-element: <root><a>1</a><b>2</b></root>. Om din JSON har exakt en toppnivånyckel blir den nyckeln direkt rotelementets namn.

Hur representeras XML-attribut i JSON?

Ett attribut som <user id="7"> blir nyckeln "@_id": "7" i det resulterande JSON-objektet. Det här är en vanlig, dokumenterad konvention (används av bibliotek som fast-xml-parser) som håller attribut åtskilda från barnelement.

Blir upprepade XML-element en JSON-array?

Ja. Om ett element har flera barn med samma taggnamn, t.ex. <items><item>1</item><item>2</item></items>, ger konverteringen till JSON {"items":{"item":["1","2"]}}. Att konvertera den JSON:en tillbaka till XML återskapar de upprepade <item>-elementen.

Bevaras tal och booleaner när man konverterar XML till JSON?

XML har inget inbyggt begrepp för tal eller booleaner — allt är text — så textinnehåll kommer igenom som en JSON-sträng (t.ex. "30" istället för 30). Om du behöver numeriska typer måste du konvertera dessa fält efteråt.

Laddas min data upp någonstans?

Nej. Tolkning och konvertering sker helt i JavaScript i din webbläsare, med det inbyggda DOMParser-API:et — inget skickas till en server, så det är säkert att använda med privata konfigurationsfiler eller interna API-payloads.

Relaterade verktyg