JSON to XML
Konvertera JSON till XML-format
JSON-inmatning
XML-utmatning
Vad är JSON till XML-konvertering?
JSON (JavaScript Object Notation) och XML (eXtensible Markup Language) är de två dominerande formaten för datautbyte inom mjukvaruutveckling. JSON använder nyckel-värdepar och arrayer i en kompakt syntax, medan XML omsluter data i öppnings- och stängningstaggar med valfria attribut. Att konvertera JSON till XML innebär att man översätter JSON:s strukturella primitiver — objekt, arrayer, strängar, tal, booleska värden och null — till ett välformat XML-dokument med matchande elementnästning.
XML är fortfarande det obligatoriska formatet i många företagssystem, myndighets-API:er, SOAP-webbtjänster och branschstandarder som HL7 (sjukvård), FpML (finans) och XBRL (finansiell rapportering). När din applikation producerar JSON men konsumenten nedströms förväntar sig XML hanterar en JSON till XML-konverterare översättningen utan manuell omstrukturering. Konverteringen följer förutsägbara mappningsregler: JSON-objekt blir XML-element, arrayelement blir upprepade syskonelement och primitiva värden blir textnoder.
Det finns ingen enskild RFC eller W3C-standard som definierar hur JSON mappas till XML. Olika bibliotek producerar olika utdata för samma indata. Den vanligaste konventionen (som används av det här verktyget) omsluter hela dokumentet i ett konfigurerbart rotelement, konverterar varje JSON-nyckel till ett XML-barnelement och representerar arrayelement som upprepade element med samma taggnamn. Att förstå dessa mappningsregler spelar roll när det mottagande systemet kräver ett specifikt XML-schema (XSD).
Varför använda en online JSON till XML-konverterare?
Att skriva XML för hand från en JSON-källa är tidsödande och felbenäget. Felanpassade taggar, glömda stängningselement och felaktig nästning producerar dokument som misslyckas med schemavalidering. En konverterare hanterar den strukturella översättningen automatiskt.
Användningsfall för JSON till XML
Mappningsregler för JSON till XML
Eftersom det inte finns någon universell standard för JSON till XML-konvertering producerar olika verktyg olika utdata. Tabellen nedan visar de mappningskonventioner som används av det här verktyget och de flesta populära biblioteken (js2xmlparser, xmlbuilder, fast-xml-parser). Konventionen med upprepade syskon för arrayer blev dominerande eftersom den speglar hur XML-scheman naturligt modellerar samlingar — varje element är ett fullödigt element snarare än ett inbakat barn — och den integreras rent med XPath-frågor och XSLT-transformationer.
| JSON Type | JSON Example | XML Output |
|---|---|---|
| Object | {"name": "Alice"} | <name>Alice</name> |
| Nested object | {"user": {"age": 30}} | <user><age>30</age></user> |
| Array | {"colors": ["red", "blue"]} | <colors>red</colors><colors>blue</colors> |
| String | "hello" | <root>hello</root> |
| Number | 42 | <root>42</root> |
| Boolean | true | <root>true</root> |
| Null | null | <root/> |
| Empty object | {} | <root/> |
| Empty array | [] | (no child elements) |
Kodexempel
Nedan finns körbara kodexempel för att konvertera JSON till XML i tre miljöer. Varje exempel producerar välformat XML från ett exempel-JSON-objekt.
import { create } from 'xmlbuilder2';
const json = {
order: {
id: 1024,
items: [
{ sku: "A1", qty: 2 },
{ sku: "B3", qty: 1 }
],
shipped: false
}
};
const xml = create({ version: '1.0' })
.ele(json)
.end({ prettyPrint: true });
console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → <items>
// → <sku>B3</sku>
// → <qty>1</qty>
// → </items>
// → <shipped>false</shipped>
// → </order>import json
import xmltodict
data = {
"order": {
"id": 1024,
"items": [
{"sku": "A1", "qty": 2},
{"sku": "B3", "qty": 1}
],
"shipped": False
}
}
# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# → <id>1024</id>
# → <items>
# → <sku>A1</sku>
# → <qty>2</qty>
# → </items>
# → <items>
# → <sku>B3</sku>
# → <qty>1</qty>
# → </items>
# → <shipped>false</shipped>
# → </order>package main
import (
"encoding/json"
"encoding/xml"
"fmt"
)
type Item struct {
SKU string `json:"sku" xml:"sku"`
Qty int `json:"qty" xml:"qty"`
}
type Order struct {
XMLName xml.Name `xml:"order"`
ID int `json:"id" xml:"id"`
Items []Item `json:"items" xml:"items"`
Shipped bool `json:"shipped" xml:"shipped"`
}
func main() {
raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`
var order Order
json.Unmarshal([]byte(raw), &order)
out, _ := xml.MarshalIndent(order, "", " ")
fmt.Println(xml.Header + string(out))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → ...
}