CodeKitHub
JSON-verktøy

JSON ↔ XML-konverter

Sist oppdatert:

Når du konverterer JSON til XML, blir hver nøkkel en element-tag og hver verdi blir tekstinnholdet — nøstede objekter blir nøstede elementer, arrayer blir gjentatte søskenelementer, og XML-attributter mappes til `@_name`-nøkler i JSON slik at konverteringen forblir tapsfri begge veier. Dette verktøyet gjør denne konverteringen, i begge retninger, helt i nettleseren din.

Hva er dette verktøyet?

XML og JSON er begge trestrukturerte dataformater, men de dukker opp på forskjellige steder: gamle bedrifts-API-er, SOAP-tjenester, RSS/Atom-feeder og mange konfigurasjonsformater snakker fortsatt XML, mens moderne REST-API-er og JavaScript-kode nesten utelukkende snakker JSON. Dette verktøyet oversetter mellom de to slik at du slipper å skrive begge for hånd når du skal integrere gamle og nye systemer.

Konverteringen er bygget direkte på nettleserens DOMParser-API for å lese XML, og følger strukturen definert i W3C XML 1.0-spesifikasjonen for å produsere den — så XML-en som genereres er velformet, og XML-en som godtas tolkes på samme måte som en nettleser eller et standardkompatibelt XML-bibliotek ville gjort.

Fordi XML har begreper JSON ikke har (attributter, blandet tekst/element-innhold, ett obligatorisk rotelement) og JSON har begreper XML ikke har (native arrayer, boolske verdier, tall), bruker verktøyet en dokumentert, mye brukt konvensjon: et XML-attributt `name="value"` blir JSON-nøkkelen `"@_name": "value"`, elementets tekstinnhold blir enten elementets direkte strengverdi (når det ikke har barn eller attributter) eller en `"#text"`-nøkkel ved siden av eventuelle attributter, og gjentatte søskenelementer med samme tag blir en JSON-array.

Hvorfor bruke det?

  • Toveis — konverter JSON til XML eller XML til JSON fra samme skjerm.
  • Håndterer nøsting korrekt — nøstede JSON-objekter blir nøstede XML-elementer og omvendt, uansett dybde.
  • Arrayer mappes til gjentatte elementer — en JSON-array under en nøkkel blir like mange søsken-XML-elementer med samme tag, og gjentatte XML-tagger kommer tilbake som en JSON-array.
  • XML-attributter bevares — ved hjelp av konvensjonen `@_attributeName`, slik at attributtdata ikke går tapt.
  • Kopier til utklippstavlen eller last ned som .json- eller .xml-fil.
  • 100 % klientsidebasert — ingenting du limer inn blir lastet opp noe sted.

Slik bruker du det

  1. Velg en retning: «XML → JSON» eller «JSON → XML».
  2. Lim dataene dine inn i inndataboksen.
  3. Klikk «Konverter».
  4. Se over resultatet, kopier det, eller klikk «Last ned» for å lagre en fil.

Eksempel

Inndata

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

Resultat

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

Den ene toppnivå-nøkkelen i JSON («user») blir XML-rotelementet; hvis JSON-en har mer enn én toppnivå-nøkkel, pakker verktøyet alt inn i et <root>-element siden XML krever nøyaktig ett rotelement.

Praktiske tips

  • Migrerer du en gammel XML-konfigurasjon (som en gammel apps innstillingsfil) til et moderne JSON-basert system: lim inn XML-en, konverter, og juster feltnavn ved behov.
  • Tester du et SOAP- eller XML-RPC-endepunkt fra JavaScript: konverter JSON-forespørselen din til XML her før du sender den, eller konverter et XML-svar tilbake til JSON for enkel inspeksjon.
  • Bruker JSON-en din arrayer for data som XML ville representere som gjentatte elementer, må du sørge for at arrayen er nøstet under én enkelt nøkkel først (f.eks. {"items":{"item":[1,2,3]}}) i stedet for en bar toppnivå-array, siden XML ikke kan ha flere rotelementer.

Hvorfor @_-attributtkonvensjonen er viktig

Det vanskeligste med JSON/XML-konvertering er at XML-elementer kan bære to slags data samtidig — attributter og barneinnhold — mens et vanlig JSON-objekt bare har nøkler og verdier. Uten en konvensjon for å holde disse atskilt ville en enkel konverter enten miste attributter helt eller blande dem sammen med barneelementer på en måte som ikke kan konverteres pålitelig tilbake. Konvensjonen med `@_name`-prefiks (brukt også av utbredte biblioteker i JavaScript-økosystemet) løser dette ved å gi attributter en tydelig, entydig nøkkelform, slik at `<product id="42">Widget</product>` konverteres frem og tilbake som `{"product":{"@_id":"42","#text":"Widget"}}` i stedet for å miste id-en eller gjette feil om hvilken verdi som var hva.

Ofte stilte spørsmål

Hva skjer med JSON som har mer enn én toppnivå-nøkkel?

XML krever ett enkelt rotelement, så hvis JSON-objektet ditt har flere toppnivå-nøkler (f.eks. {"a":1,"b":2}), pakkes resultatet inn i et <root>-element: <root><a>1</a><b>2</b></root>. Har JSON-en nøyaktig én toppnivå-nøkkel, blir den nøkkelen direkte navnet på rotelementet.

Hvordan representeres XML-attributter i JSON?

Et attributt som <user id="7"> blir nøkkelen "@_id": "7" i det resulterende JSON-objektet. Dette er en vanlig, dokumentert konvensjon (brukt av biblioteker som fast-xml-parser) som holder attributter atskilt fra barneelementer.

Blir gjentatte XML-elementer til en JSON-array?

Ja. Hvis et element har flere barn med samme tag-navn, f.eks. <items><item>1</item><item>2</item></items>, gir konvertering til JSON {"items":{"item":["1","2"]}}. Konverterer du den JSON-en tilbake til XML, gjenskapes de gjentatte <item>-elementene.

Bevares tall og boolske verdier når XML konverteres til JSON?

XML har ingen native forestilling om tall eller boolske verdier — alt er tekst — så tekstinnhold kommer gjennom som en JSON-streng (f.eks. "30" i stedet for 30). Trenger du numeriske typer, må du konvertere disse feltene i etterkant.

Blir dataene mine lastet opp noe sted?

Nei. Parsing og konvertering skjer helt i JavaScript i nettleseren din, ved hjelp av det innebygde DOMParser-API-et — ingenting sendes til en server, så det er trygt å bruke med private konfigurasjonsfiler eller interne API-nyttelaster.

Relaterte verktøy