XML to JSON

Konvertera XML till JSON-format

Prova ett exempel

XML-indata

JSON-utdata

Körs lokalt · Säkert att klistra in hemligheter
JSON visas här…

Vad är XML till JSON-konvertering?

XML till JSON-konvertering är processen att omvandla data från Extensible Markup Language (XML) till JavaScript Object Notation (JSON). Båda formaten representerar strukturerad, hierarkisk data, men de använder olika syntax och datamodeller. XML använder öppnings- och stängningstaggar med valfria attribut, medan JSON använder nyckel-värdepar, arrayer och primitiva typer. Att konvertera XML till JSON låter dig arbeta med XML-data i miljöer där JSON är det naturliga formatet, till exempel JavaScript-körtider, REST API:er och NoSQL-databaser.

Konverteringen är inte alltid en-till-en. XML har konstruktioner utan direkt JSON-motsvarighet: attribut, blandat innehåll (text blandat med underordnade element), bearbetningsinstruktioner, kommentarer, CDATA-avsnitt och namnrymdsdeklarationer. Olika konverteringsbibliotek hanterar dessa konstruktioner på olika sätt, vilket är anledningen till att flera konventioner finns. Det vanligaste tillvägagångssättet är att prefixa attributnamn med @ och placera textinnehåll i ett #text-fält när attribut förekommer på samma element.

XML till JSON-konvertering är ett vanligt steg vid migrering från SOAP till REST, konsumtion av äldre enterprise-API:er eller bearbetning av myndighets- och finansiella dataflöden som kräver XML. Istället för att skriva om producenter och konsumenter samtidigt konverterar team XML-nyttolasten vid gränslagret och skickar JSON vidare. AWS API Gateway, Apache Camel och MuleSoft stödjer alla detta mönster inbyggt.

XML input
<bookstore>
  <book category="fiction">
    <title lang="en">The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <year>1925</year>
    <price>10.99</price>
  </book>
  <book category="non-fiction">
    <title lang="en">Sapiens</title>
    <author>Yuval Noah Harari</author>
    <year>2011</year>
    <price>14.99</price>
  </book>
</bookstore>
JSON output
{
  "bookstore": {
    "book": [
      {
        "@category": "fiction",
        "title": {
          "@lang": "en",
          "#text": "The Great Gatsby"
        },
        "author": "F. Scott Fitzgerald",
        "year": "1925",
        "price": "10.99"
      },
      {
        "@category": "non-fiction",
        "title": {
          "@lang": "en",
          "#text": "Sapiens"
        },
        "author": "Yuval Noah Harari",
        "year": "2011",
        "price": "14.99"
      }
    ]
  }
}

Varför använda en online-XML till JSON-konverterare?

Att skriva ett engångsskript för konvertering tar tid, särskilt när XML:en innehåller attribut, namnrymder eller upprepade element som behöver bli JSON-arrayer. En webbläsarbaserad konverterare ger dig JSON-utdata på sekunder så att du kan inspektera strukturen och gå vidare.

Omedelbar konvertering
Klistra in XML och få JSON-utdata direkt. Inget behov av att installera ett bibliotek, skriva ett skript eller konfigurera ett byggverktyg.
🔒
Integritetsfokuserad behandling
Hela konverteringen körs i din webbläsare med JavaScript. Din XML-data lämnar aldrig din enhet och skickas aldrig till någon server.
🔀
Hanterar attribut och arrayer
Attribut mappas till @-prefixade nycklar. Upprepade syskonelement grupperas automatiskt i JSON-arrayer enligt Parker- eller BadgerFish-konventionen.
📋
Inget konto krävs
Öppna sidan, klistra in din XML och kopiera JSON-resultatet. Ingen registrering, ingen API-nyckel, inga användningsgränser.

Användningsfall för XML till JSON

Frontendutveckling
Konvertera XML API-svar till JSON så att du kan rendera data i React-, Vue- eller Angular-komponenter utan att lägga till ett XML-tolkningsbibliotek i ditt klientpaket.
Backendteknik
Omvandla SOAP-nyttolaster, RSS/Atom-flöden eller XML-RPC-svar till JSON vid API-gateway-lagret innan data skickas till mikrotjänster som förväntar sig JSON-indata.
DevOps och CI/CD
Konvertera XML-testrapporter (JUnit, NUnit, xUnit) till JSON för inmatning i instrumentpaneler, Slack-botar eller anpassade CI-aviseringspipelines.
QA och testning
Jämför konverterade JSON-ögonblicksbilder mot förväntad utdata för att verifiera att en XML-producerande tjänst inte har ändrat sin svarsstruktur mellan releaser.
Datateknik
Konvertera XML-exporter från myndighetsportaler, finansiella dataflöden (FIX, FIXML) eller vårdsystem (HL7 CDA) till JSON för laddning i BigQuery, Snowflake eller Elasticsearch.
Lära sig dataformat
Studenter som studerar datautbyte kan klistra in XML-exempel i konverteraren för att se exakt hur element, attribut och nästning mappas till JSON-nycklar, objekt och arrayer.

XML till JSON-mappningsreferens

XML och JSON har olika datamodeller. Tabellen nedan visar hur varje XML-konstruktion mappas till sin JSON-motsvarighet under den vanligaste konventionen (@ för attribut, #text för text bredvid attribut). Vissa konstruktioner, som blandat innehåll och kommentarer, har ingen standard-JSON-representation.

XML-konstruktionXML-exempelJSON-motsvarighet
Element<name>text</name>"name": "text"
Nested elements<a><b>1</b></a>"a": { "b": "1" }
Attributes<el attr="v"/>"el": { "@attr": "v" }
Text + attributes<el a="1">text</el>"el": { "@a": "1", "#text": "text" }
Repeated elements<r><i>1</i><i>2</i></r>"r": { "i": ["1", "2"] }
Mixed content<p>A <b>B</b> C</p>Varies by convention
CDATA<![CDATA[raw]]>"#cdata": "raw" or flattened
Namespacesxmlns:prefix="uri"Prefix preserved or stripped
Empty element<el/>"el": null or ""
Comments<!-- note -->Discarded (no JSON equivalent)

XML till JSON-konventioner jämförda

Det finns ingen enskild standard som styr hur XML mappas till JSON. Tre konventioner används i stor utsträckning, var och en med olika avvägningar för attributhantering, arraydetektering och textbevarande.

BadgerFish
Varje textnod placeras i en $-nyckel. Attribut får @-prefixade nycklar. Namnrymder bevaras som @xmlns-poster. Utförlig men förlustfri: du kan konvertera tillbaka till XML utan att förlora data.
Parker
Tar bort attribut helt och konverterar textelement till direkta värden. Upprepade element blir arrayer. Kompakt och ren, men destruktiv: attribut och namnrymdsinformation kasseras.
GData (Google Data)
Använder $t för textinnehåll och bevarar attribut som nycklar på toppnivå utan prefix. En mellanlösning mellan BadgerFish-utförlighet och Parker-enkelhet. Användes historiskt i Google API:er.

Kodexempel

Nedan finns fungerande exempel för att konvertera XML till JSON i JavaScript, Python, Go och på kommandoraden. Varje exempel hanterar nästlade element och upprepade syskontaggar.

JavaScript (browser)
// Using the DOMParser API to walk XML and build a JSON object
function xmlToJson(xml) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xml, 'application/xml')

  function nodeToObj(node) {
    const obj = {}
    // Handle attributes
    if (node.attributes) {
      for (const attr of node.attributes) {
        obj['@' + attr.name] = attr.value
      }
    }
    // Handle child nodes
    for (const child of node.childNodes) {
      if (child.nodeType === 3) { // text
        const text = child.textContent.trim()
        if (text) obj['#text'] = text
      } else if (child.nodeType === 1) { // element
        const key = child.nodeName
        const val = nodeToObj(child)
        if (obj[key]) {
          if (!Array.isArray(obj[key])) obj[key] = [obj[key]]
          obj[key].push(val)
        } else {
          obj[key] = val
        }
      }
    }
    // Simplify text-only nodes
    const keys = Object.keys(obj)
    if (keys.length === 1 && keys[0] === '#text') return obj['#text']
    return obj
  }

  return nodeToObj(doc.documentElement)
}

const xml = '<user><name>Alice</name><role>admin</role></user>'
console.log(JSON.stringify(xmlToJson(xml), null, 2))
// → { "name": "Alice", "role": "admin" }
Python
import xmltodict
import json

xml = """
<user>
  <name>Alice</name>
  <roles>
    <role>admin</role>
    <role>editor</role>
  </roles>
</user>
"""

# xmltodict converts XML to an OrderedDict
result = xmltodict.parse(xml)
print(json.dumps(result, indent=2))
# → {
# →   "user": {
# →     "name": "Alice",
# →     "roles": { "role": ["admin", "editor"] }
# →   }
# → }

# With the standard library (xml.etree.ElementTree)
import xml.etree.ElementTree as ET

def etree_to_dict(elem):
    d = {}
    if elem.attrib:
        d.update({f"@{k}": v for k, v in elem.attrib.items()})
    for child in elem:
        child_data = etree_to_dict(child)
        if child.tag in d:
            if not isinstance(d[child.tag], list):
                d[child.tag] = [d[child.tag]]
            d[child.tag].append(child_data)
        else:
            d[child.tag] = child_data
    if elem.text and elem.text.strip():
        if d:
            d["#text"] = elem.text.strip()
        else:
            return elem.text.strip()
    return d

root = ET.fromstring(xml)
print(json.dumps(etree_to_dict(root), indent=2))
Go
package main

import (
    "encoding/json"
    "encoding/xml"
    "fmt"
    "strings"
)

// For simple, known schemas — define a struct
type User struct {
    XMLName xml.Name `xml:"user"`
    Name    string   `xml:"name"`
    Roles   []string `xml:"roles>role"`
}

func main() {
    data := `<user><name>Alice</name><roles><role>admin</role><role>editor</role></roles></user>`
    var user User
    xml.NewDecoder(strings.NewReader(data)).Decode(&user)

    out, _ := json.MarshalIndent(user, "", "  ")
    fmt.Println(string(out))
    // → { "Name": "Alice", "Roles": ["admin", "editor"] }
}
CLI (xmllint + jq / yq)
# Using xq (part of yq, a jq wrapper for XML)
# Install: pip install yq  OR  brew install yq
echo '<user><name>Alice</name></user>' | xq .
# → { "user": { "name": "Alice" } }

# Using xmlstarlet + jq
xmlstarlet sel -t -v '//name' input.xml | jq -R '{ name: . }'

# Node.js one-liner with xml2js
echo '<a><b>1</b></a>' | node -e "
  const {parseString} = require('xml2js');
  let d=''; process.stdin.on('data',c=>d+=c);
  process.stdin.on('end',()=>parseString(d,(e,r)=>console.log(JSON.stringify(r,null,2))))
"

Vanliga frågor

Är XML till JSON-konvertering förlustfri?
Inte alltid. XML-attribut, kommentarer, bearbetningsinstruktioner och namnrymdsdeklarationer har ingen direkt JSON-motsvarighet. De flesta konverterare bevarar attribut med en @-prefix-konvention, men kommentarer och bearbetningsinstruktioner kasseras. Om du behöver en fullt reversibel tur-och-retur, använd en förlustfri konvention som BadgerFish.
Hur representeras XML-attribut i JSON?
xmlToJsonContent.a2
Hur hanterar konverteraren upprepade XML-element?
När ett element förekommer mer än en gång under samma förälder grupperar konverteraren dem i en JSON-array. Till exempel blir två item-syskon till {"item": ["a", "b"]}. Ett enstaka item-element förblir ett vanligt strängvärde om inte force-array-läget är aktiverat.
Kan jag konvertera JSON tillbaka till XML?
Ja, men resultatet beror på konventionen som användes vid den ursprungliga konverteringen. Om attribut bevarades med @-prefix kan en JSON till XML-konverterare återskapa dem. Om den ursprungliga konverteringen använde Parker (som tar bort attribut) är den informationen borta. ToolDeck har även ett JSON till XML-verktyg för omvänd konvertering.
Vad händer med XML-namnrymder under konvertering?
Namnrymdshantering varierar beroende på bibliotek. Vissa konverterare bevarar prefixet i nyckelnamnet (t.ex. "ns:element"), andra mappar xmlns-deklarationer till separata fält och vissa tar bort namnrymder helt. Kontrollera utdata för din specifika XML för att verifiera namnrymdsbeteendet.
Finns det en standard för XML till JSON-konvertering?
Det finns ingen formell W3C- eller IETF-standard. De närmaste referenserna är BadgerFish-konventionen, Parker-konventionen och OASIS XSLT-till-JSON-mappningen. I praktiken implementerar varje bibliotek sina egna regler, vilket är anledningen till att samma XML kan producera något annorlunda JSON i olika verktyg.
Hur hanterar jag stora XML-filer?
Webbläsarbaserade konverterare fungerar bra för filer upp till några megabyte. För större filer (10 MB+), använd en strömmande parser som Pythons iterparse (xml.etree.ElementTree) eller Node.js xml-stream. Dessa bearbetar dokumentet inkrementellt utan att läsa in hela trädet i minnet.