JSON naar XML Omzetter
Plak JSON en krijg direct XML. Converteert objecten, arrays en @_-attributen in de browser — niets geüpload. Gratis, privé, geen aanmelding vereist.
Opties · 2 spaties · JSON → XML
Wat is JSON-naar-XML-conversie en hoe werkt het?
JSON (JavaScript Object Notation) en XML (Extensible Markup Language) zijn beide gestructureerde dataformaten, maar ze hebben fundamenteel verschillende modellen: JSON is een boom van objecten, arrays, strings, getallen, booleans en null-waarden zonder concept van attributen of documentrootbeperkingen; XML is een boom van elementen die attributen en tekstinhoud kunnen bevatten, en het document moet precies één rootelement hebben. Voor conversie van JSON naar XML is een set conventies nodig om dit verschil te overbruggen.
Deze tool gebruikt de meest wijdverspreide conventie — dezelfde als die van fast-xml-parser (Node.js), xmltodict (Python) en JAXB (Java) — in omgekeerde volgorde toegepast:
**1. Rootelementnormalisatie.** Het belangrijkste verschil tussen JSON en XML is de rootbeperking. JSON heeft geen rootconcept; XML vereist precies één. De omzetter verwerkt vier gevallen automatisch. Een object met één sleutel gebruikt die sleutel als XML-root: { "config": {...} } →
**2. Prefix @_ → XML-attributen.** JSON-sleutels met het prefix @_ worden XML-attributen op het omsluitende element. { "element": { "@_id": "42", "@_class": "primary" } } produceert
**3. #text → elementtekstinhoud.** Wanneer een element zowel attributen als tekstinhoud nodig heeft, wordt de tekst opgeslagen onder de sleutel #text: { "price": { "@_currency": "USD", "#text": "29.99" } } →
**4. Arrays → herhaalde gelijknamige nevengeschikte elementen.** XML staat meerdere kindelementen met dezelfde naam toe; JSON gebruikt arrays voor geordende lijsten. Een JSON-array onder een sleutel produceert herhaalde kindelementen die de sleutelnaam hergebruiken: { "items": ["a", "b"] } produceert
**5. Symmetrisch met XML-naar-JSON.** De @_- en #text-conventies die hier worden gebruikt, zijn exact dezelfde als die van de begeleidende XML naar JSON Omzetter. Dit betekent dat een JSON → XML → JSON-heen-en-weercyclus attributen, tekstinhoud en elementstructuur behoudt — zolang de invoer-JSON de @_/#text-conventies volgt.
**Wanneer JSON naar XML converteren?** De meest voorkomende scenario's zijn: (1) data versturen naar een oudere SOAP of XML-gebaseerde webservice die een XML-aanvraagbody vereist; (2) XML-configuratiebestanden genereren (Spring, Maven, Ant, Android-resources) vanuit JSON-data; (3) sitemap.xml- of RSS-feed-XML produceren vanuit JSON-inhoudsdata; (4) interoperabiliteit met bedrijfssystemen (ERP, CRM, EDI) die XML consumeren; (5) SVG of andere XML-gebaseerde grafische formaten programmatisch genereren vanuit JSON-data. Gebruik voor het formatteren en valideren van de resulterende XML de XML Formatter.
// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';
const data = {
catalog: {
product: {
'@_id': 'P01',
'@_category': 'electronics',
name: 'Wireless Headphones',
price: {
'@_currency': 'USD',
'#text': '79.99'
}
}
}
};
const builder = new XMLBuilder({
attributeNamePrefix: '@_', // @_ keys become XML attributes
textNodeName: '#text', // #text key becomes element text content
ignoreAttributes: false, // process @_ attribute keys
format: true, // pretty-print with indentation
indentBy: ' ', // 2-space indent
});
const xml = builder.build(data);
console.log(xml);
// <catalog>
// <product id="P01" category="electronics">
// <name>Wireless Headphones</name>
// <price currency="USD">79.99</price>
// </product>
// </catalog> Kernfuncties
Live conversie
XML-uitvoer wordt direct bijgewerkt terwijl je JSON typt of plakt — geen Omzetten-knop nodig. Grote invoer (>200 KB) schakelt automatisch over naar handmatige modus om de browser responsief te houden.
Automatische rootnormalisatie
XML vereist precies één rootelement. Objecten met één sleutel gebruiken hun sleutel als root; objecten met meerdere sleutels worden omsloten in
@_-attribuut- en #text-conventie
Sleutels met het prefix @_ worden XML-attributen; de sleutel #text wordt elementtekstinhoud. Dit past bij de fast-xml-parser- en xmltodict-conventie, waardoor de uitvoer symmetrisch is met de begeleidende XML naar JSON Omzetter.
Array naar herhaalde elementen
JSON-arrays onder een sleutel produceren herhaalde kindelementen die de sleutelnaam hergebruiken — geen enkelvoudiging. { "items": [1, 2, 3] } levert drie
100% browsergebaseerde privacy
Alle conversie draait lokaal in je browser via JavaScript. Je JSON — inclusief inloggegevens, interne configuraties en gevoelige payloads — wordt nooit naar een server verzonden, nooit gelogd en nooit opgeslagen.
Symmetrische heen-en-weercyclus met XML naar JSON
De @_- en #text-conventies worden gedeeld met de begeleidende XML naar JSON Omzetter. Een JSON → XML → JSON-heen-en-weercyclus behoudt attributen, tekstinhoud en geneste structuur nauwkeurig.
Voorbeelden
API-responsobject
{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}} Een JSON-object met één sleutel waarbij de sleutel op het hoogste niveau het XML-rootelement wordt. Het geneste address-object produceert een kindelement
metArray op het hoogste niveau
[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}] Wanneer de gehele invoer een JSON-array is (niet omsloten in een object), produceert de omzetter
Object met attributen en tekstinhoud
{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}} Sleutels met het prefix @_ worden XML-attributen op het element: @_id wordt id="P01" en @_category wordt category="electronics" op het element
Zo gebruik je het
- 1
Plak je JSON
Voer je JSON-data in of plak deze in het invoerveld hierboven. Je kunt ook op 'Voorbeeld laden' klikken om een voorbeeld te proberen — een API-responsobject, een array-payload of een object met @_-attributen en #text.
- 2
Bekijk de live XML-uitvoer
XML verschijnt direct in het uitvoerpaneel. Objecten met één sleutel gebruiken hun sleutel als root; objecten met meerdere sleutels worden omsloten in
; @_-prefixed sleutels worden attributen; arrays worden herhaalde kindelementen. Pas de inspringing (2 of 4 spaties) naar wens aan. - 3
Kopieer of download
Klik op Kopiëren om de XML naar je klembord te halen, of op Downloaden om het op te slaan als .xml-bestand. Om het resultaat te valideren of te herformatteren, plak het in de XML Formatter.
Veelgemaakte fouten bij conversie
Object met meerdere sleutels krijgt onverwachte -wrapper
Als je JSON op het hoogste niveau meerdere sleutels heeft, worden ze allemaal omsloten in
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema // Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response> Array op het hoogste niveau krijgt - -wrapper
Een JSON-array op het hoogste niveau heeft geen elementnaam, dus hij wordt omsloten als
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic // Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag Attribuutsleutels missen het prefix @_
Om een XML-attribuut te produceren, moet de JSON-sleutel het prefix @_ hebben. Zonder het prefix wordt de sleutel behandeld als kindelement, niet als attribuut.
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag> ← id is a child element // Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag> ← id is an attribute Element met zowel attributen als tekst — #text ontbreekt
Als je wilt dat een element zowel XML-attributen als tekstinhoud heeft, moet je de sleutel #text gebruiken voor de tekst. Zonder die sleutel heeft de tekst nergens naartoe en wordt het element leeg of geeft het een fout.
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content // Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price> ← text content JSON-sleutels met XML-ongeldige tekens
XML-elementnamen mogen niet beginnen met een cijfer en mogen geen spaties, dubbele punten (behalve voor naamruimteprefixen) of de meeste speciale tekens bevatten. Als je JSON-sleutels deze tekens bevatten, is de XML-uitvoer ongeldig. Hernoem de problematische sleutels vóór het converteren, of saneer ze in een naverwerkingsstap.
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem> ← invalid XML // Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem> ← valid XML Speciale tekens in waarden niet geschreven
XML-tekstinhoud mag geen ruwe <, >, & of "-tekens bevatten — ze moeten worden geschreven als <, >, & en ". De omzetter schrijft deze tekens automatisch in elementtekstinhoud en attribuutwaarden. Als vervolgverwerking ze dubbel schrijft, controleer dan of je XML-parser ruwe XML-bytes consumeert in plaats van al-geschreven inhoud opnieuw te schrijven.
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' & role = 'admin'</query>
// If double-processed: &amp; — consumer is re-escaping // Converter output is correct — consume it as XML, not as a raw string // <query>name = 'Alice' & role = 'admin'</query> // XML parser decodes to: name = 'Alice' & role = 'admin'
Veelvoorkomende gebruiksscenario's
- SOAP en oudere XML-webservices aanroepen
- Bouw de JSON-payload in je toepassing, converteer die naar XML en POST het naar het SOAP-eindpunt. Dit vermijdt het handmatig opbouwen van XML-strings en laat je werken met de data in een native JSON-structuur tot het moment dat je het moet serialiseren voor de oudere service.
- XML-configuratiebestanden genereren
- Spring, Maven, Ant, Tomcat en Android gebruiken allemaal XML-configuratieformaten. Genereer of transformeer configuratiedata als JSON — makkelijker te vergelijken en te versiebeheren — en converteer naar XML voor implementatie.
- Sitemap- en RSS-feed-XML produceren
- Contentmanagementsystemen en statische sitegeneratoren slaan pagina-meta-data vaak op als JSON. Converteer die meta-data naar sitemap.xml of RSS-feed-XML om in te dienen bij zoekmachines of inhoud te syndiceren naar feedlezers.
- Bedrijfsdataintegratie (EDI / ERP / CRM)
- ERP-systemen (SAP, Oracle), CRM-platformen en EDI-netwerken wisselen data vaak uit in XML. Converteer JSON-exports van moderne REST API's naar XML om deze systemen te voeden zonder een aangepaste XML-serializer te bouwen.
- Android-resourcebestanden
- Android-stringresources, layoutbeperkingen en manifest-vermeldingen zijn allemaal XML. Genereer of update resourcebestanden programmatisch vanuit JSON-databronnen en converteer naar het vereiste XML-formaat voor het Android-buildsysteem.
- SVG en vectorgraphics genereren
- SVG is XML. Bouw SVG-structuur als JSON-data — paden, vormen, kleuren, transformaties — en converteer naar XML om geldige SVG-bestanden te produceren voor web, druk of vectorbewerkingstools.
Technische details
- RFC 8259-conforme JSON-verwerking
- JSON-invoer wordt verwerkt via de ingebouwde JSON.parse() van de browser, die volledig voldoet aan RFC 8259. Het geeft nauwkeurige syntaxisfoutmeldingen met beste-schatting positie-informatie (regel en kolom) en verwerkt alle JSON-gegevenstypen: strings, getallen, booleans, null, arrays en objecten.
- Aangepaste recursieve JSON-naar-XML-serializer
- Na het verwerken doorloopt een aangepaste recursieve serializer de JSON-boom. Objectsleutels die beginnen met @_ worden uitgegeven als XML-attributen op het ouderelement. De sleutel #text wordt uitgegeven als de tekstinhoud van het element. Gewone objectsleutels worden kindelementen. Arraywaarden produceren herhaalde gelijknamige nevengeschikte elementen. Speciale tekens (<, >, &, ", ') in tekstinhoud en attribuutwaarden worden geschreven naar hun XML-entiteitsreferenties.
- Rootnormalisatie
- Omdat XML precies één rootelement vereist, past de serializer rootnormalisatie toe vóór het opbouwen van het document: objecten met één sleutel gebruiken de sleutel als root; objecten met meerdere sleutels en arrays op het hoogste niveau krijgen een synthetische
-wrapper. Dit zorgt ervoor dat de uitvoer altijd welgevormde XML is ongeacht de invoervorm. - 100% browsergebaseerd — geen upload, geen server
- Alle verwerking draait in de JavaScript-engine van je browser. Er worden geen gegevens via het netwerk verzonden. Invoer groter dan 200 KB schakelt automatisch over van live-modus naar handmatige modus (waarbij een expliciete klik op Omzetten nodig is) om de browser responsief te houden tijdens zware serialisatie.
Aanbevolen aanpak
- Beheer het rootelement met een object met één sleutel
- De schoonste manier om betekenisvolle XML te produceren is ervoor te zorgen dat je JSON op het hoogste niveau een object met één sleutel is waarvan de sleutel de gewenste rootelementnaam is. Data met meerdere sleutels insluiten onder één benoemde sleutel geeft je een semantisch betekenisvolle root in plaats van de generieke
-wrapper. - Gebruik @_ en #text voor attribuutrijke XML
- Als je doel-XML-schema veel attributen gebruikt (gangbaar in configuratiebestanden, SVG en SOAP-envelopes), herstructureer dan je JSON om @_-prefixed sleutels en #text te gebruiken vóór het converteren. De resulterende XML past dan exact bij het doelschema zonder naverwerking.
- Wikkel arrays in benoemde objecten voor betekenisvolle tagnamen
- Een array op het hoogste niveau produceert het generieke
-patroon, waarbij- ...
- een vaste letterlijke naam is. De array insluiten onder een benoemde sleutel — { "products": [...] } — produceert herhaalde
-elementen (de sleutelnaam wordt hergebruikt voor elk array-element) onder een -wrapper. Dit geeft je een domein-betekenisvolle tagnaam en is bijna altijd te verkiezen voor XML die wordt verwerkt of gevalideerd door een schema. - Valideer de uitvoer met de XML Formatter
- Na het converteren, plak de XML-uitvoer in de XML Formatter om de welgevormdheid te valideren, de inspringing te controleren en eventuele structurele problemen te identificeren vóór het versturen van de XML naar een vervolgservice of het committen naar versiebeheer.
- Saneer JSON-sleutels vóór het converteren
- XML-elementnamen moeten beginnen met een letter of underscore en mogen geen spaties of de meeste speciale tekens bevatten. Als je JSON-sleutels afkomstig zijn van een externe bron (een databasekolomnaam, een API-veldnaam of gebruikersinvoer), controleer ze dan op XML-naamgeldigheid vóór het converteren om ongeldige uitvoer te voorkomen.
Veelgestelde vragen
Wordt mijn JSON-data naar een server verzonden wanneer ik deze tool gebruik?
Hoe bepaalt de tool wat het XML-rootelement is?
Waarom wordt een JSON-object met meerdere sleutels omsloten in ?
Hoe wordt een JSON-array op het hoogste niveau omgezet naar XML?
Hoe zet ik JSON-sleutels om naar XML-attributen?
Waarvoor wordt de sleutel #text gebruikt?
Heeft inspringing invloed op de XML-structuur?
Hoe wordt een JSON-array genest in een object omgezet naar XML?
Hoe zet ik XML terug naar JSON?
Kan ik de XML-uitvoer valideren of formatteren?
Is er een bestandsgroottelimiet voor JSON-invoer?
Welke JSON-typen worden ondersteund?
Gerelateerde tools
Alle tools bekijken →Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
CSV naar JSON omzetter
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
JSON Diff (Vergelijken)
Encodering en formattering
Vergelijk twee JSON-bestanden direct in je browser. Zij-aan-zij markering, RFC 6902 JSON Patch-uitvoer, negeer storende velden zoals tijdstempels en ID's. 100% privé, geen upload.
Online JSON-formatter & validator
Encodering en formattering
Formatteer en valideer JSON direct in je browser. Gratis online tool met syntaxvalidatie, foutdetectie, minificeren en kopiëren met één klik. 100% privé.
JSON Schema-validator
Encodering en formattering
Valideer JSON tegen elk JSON Schema direct in je browser. Ondersteunt Draft 2020-12, 2019-09 en Draft-07 met padnauwkeurige foutmeldingen. 100% privé — geen upload, geen account, gratis.
JSON naar CSV omzetter
Encodering en formattering
Zet JSON om naar CSV in je browser. RFC 4180-, Excel-EU-, TSV- en Pipe-presets. Geneste data afvlakken of als string. 100% privé, geen upload.