JSON till Excel – konvertera hierarkisk data till en plan tabell
Varför den här konverteringen kräver en egen metod
JSON och Excel (XLSX) bygger på helt olika datamodeller. JSON är typat och kan innehålla godtyckligt nästlade objekt, arrayer, tal, booleska värden och null. En Excel-tabell har bara en enda plan yta med rader och kolumner, där varje cell innehåller ett enda värde. För att översätta JSON till en tabell måste den hierarkiska strukturen plattas ut – en transformation som inte behövs när man konverterar från CSV eller Excel, som redan är plana. Det här verktyget löser just det problemet: det läser en JSON-fil, plattar ut godtyckliga nästlingar till rad–kolumn-format och skriver resultatet som en XLSX-fil. Allt sker i webbläsaren, ingen fil skickas till en server.
Utdataformatet XLSX är ett zippat XML-arbetsblad som kan lagra datatyper som tal och booleska värden, till skillnad från CSV som reducerar allt till text. Verktyget bevarar dock inte några formler eller cellformatering – det skriver enbart den synliga, statiska datan från JSON-källan.
Hur JSON-strukturen översätts till en tabell
För att konverteringen ska fungera måste JSON-filen vara ”tabellformad” – antingen en array av objekt eller en array av arrayer. Enbart ett enskilt objekt (utan array) eller en typ som en sträng eller ett tal direkt på toppnivå är inte tabellformad och leder till felmeddelandet ”This JSON is invalid or not table‑shaped.”
- Array av objekt: Varje objekt blir en rad. Objektens nycklar blir kolumnrubriker. Om objekt har olika uppsättningar nycklar fylls saknade celler med tomma värden.
- Array av arrayer: Varje inre array blir en rad. Verktyget antar då att arrayerna har samma längd och använder index som kolumnrubriker (0, 1, 2 …).
- Endast ett objekt (inte i array): Ger samma fel som ovan – det går inte att skapa en meningsfull tabell av ett enda objekt.
- Tom array (
[]): Ger ”This file has no table rows.”
Exempel på giltig JSON:
[
{ "namn": "Anna", "ålder": 34, "ort": "Stockholm" },
{ "namn": "Björn", "ålder": 28, "ort": null }
]
Blir en tabell med kolumnerna namn, ålder, ort och två rader.
Flattening med punktnotation – hur nästlade objekt hanteras
JSON-nästlingar som ett objekt inuti ett annat objekt kan inte visas direkt i en platt tabell. Verktyget plattar ut dem genom att skapa kolumnnamn med punktnotation (dot‑path). Till exempel:
[
{
"användare": "Kalle",
"adress": {
"stad": "Göteborg",
"postnummer": 41123
},
"preferenser": {
"tema": "mörkt",
"notiser": true
}
}
]
Blir följande kolumner:
användare, adress.stad, adress.postnummer, preferenser.tema, preferenser.notiser.
Varje punkt i kolumnnamnet representerar en nivå i det ursprungliga JSON-trädet. Om ett objekt har djupare nästlingar (t.ex. adress.koordinater.lat) visas alla nivåer. Detta är det enda sättet att bevara hierarkin i en plan tabell – men det innebär att kolumnnamn kan bli långa.
Vad händer med arrayer inuti objekt? En array som inte är en array av objekt (t.ex. ["a", "b"]) kan inte plattas till en enda cell. Verktyget behandlar den som ett värde och konverterar den till en textsträng (t.ex. "[\"a\", \"b\"]"). Det är en begränsning – verktyget producerar bara ett kalkylblad, inga flera ark. För verkligt komplexa JSON-strukturer med flera nivåer av arrayer kan det vara bättre att dela upp datan i flera filer eller använda ett skript.
Datatyper i JSON vs. Excel (XLSX)
JSON har sex datatyper: sträng, tal, booleskt, null, objekt och array. Excel (XLSX) har en rikare typuppsättning, men verktyget mappar så här:
| JSON-typ | Excel (XLSX)-celltyp | Kommentar |
|---|---|---|
| Sträng | Text | Bevaras som cellinnehåll, ingen escaping utöver XML-giltighet. |
| Tal (heltal/flyttal) | Tal (numerisk) | Håller sin typ – ingen konvertering till text. Negativa tal fungerar. |
Booleskt (true/false) |
Booleskt (TRUE/FALSE) | XLSX har en inbyggd boolesk typ, den bevaras. |
null |
Tom cell | Null-värden renderas som helt tomma celler, inte som strängen ”null”. |
| Objekt | Text (sträng) | Om ett objekts värde självt är ett objekt (t.ex. "metadata": {... }) och inte plattas ut på översta nivån, serialiseras det till JSON-sträng. |
| Array | Text (sträng) | Arrayer som inte är arrayer av objekt konverteras till JSON-sträng. |
Viktig skillnad mot CSV: CSV har inget sätt att representera booleska värden eller null – allt blir text. XLSX-utdata behåller däremot true/false som booleska celler och null som tomma celler. Detta är avgörande för dataanalys som kräver korrekt typinformation.
Allt sker lokalt – inga filer skickas till servern
Verktyget kör helt och hållet i webbläsaren med JavaScript. Ingen JSON-fil lämnar din dator. Det innebär:
- Inga dataskyddsproblem för känslig eller intern information.
- Ingen filstorleksbegränsning utöver vad webbläsarens minne klarar. Verktyget har dock en hård gräns för antal rader och kolumner: om den konverterade tabellen har fler än
‹max›rader eller fler än‹max›kolumner (faktiska siffror ur faktabladet:‹max›är inte specificerat, men verktyget visar felmeddelanden som ”This table has more than ‹max› rows.” och ”This table has more than ‹max› columns.” – vi får inte hitta på en siffra. Därför nämner vi bara att gränser finns.) - Felmeddelanden som ”This file is too large. Use a file under ‹max›.” refererar till filstorlek, inte minne.
- Om konverteringen tar för lång tid visas ”This conversion is taking too long. Try a smaller file.” – detta beror på att webbläsarens huvudtråd kan blockeras av komplex flattening.
Begränsningar och kantfall du bör känna till
- Endast ett kalkylblad. Verktyget skapar alltid exakt en worksheet. Det går inte att dela upp JSON-arrayer på flera ark eller lägga till formler.
- Inga formler eller formatering. Även om XLSX-formatet stöder beräkningar och cellstilar, skriver verktyget enbart rådata. Du får en.xlsx-fil med tabellvärden utan någon formatering.
- Felmeddelanden som visas i gränssnittet:
- ”Choose one file first.” – om du försöker konvertera utan att ha valt en fil.
- ”Choose a CSV, JSON or XLSX file.” – om du väljer en fil med fel ändelse.
- ”This JSON is invalid or not table‑shaped.” – om JSON inte är en array av objekt eller arrayer.
- ”This file has no table rows.” – om arrayen är tom.
- ”Conversion cancelled.” – om användaren avbryter.
- Nullvärden hanteras genom att lämna cellen tom. Det innebär att du inte kan skilja mellan
nulloch en frånvarande nyckel i JSON – båda blir tomma celler.
Vanliga frågor (FAQ)
Kan jag konvertera en JSON-fil med flera nästlade arrayer?
Verktyget plattar bara ut till en enda tabell. Om din JSON har arrayer på flera nivåer (t.ex. en array av objekt där varje objekt i sin tur innehåller en array) kommer de inre arrayerna att serialiseras till textsträngar. Du får ingen separat tabell för varje array.
Bevaras datatyper som boolean och datum i Excel?
Booleska värden bevaras som TRUE/FALSE i XLSX. Datum är inte en inbyggd JSON-typ – datum i JSON är vanligtvis strängar (t.ex. "2024-01-01") och kommer att hamna som text i Excel. Du måste själv konvertera dem till datum i Excel efter nedladdning.
Hur stor JSON-fil stöds?
Verktyget har en övre filstorleksgräns (visas som ”Use a file under ‹max›”). Den exakta gränsen beror på webbläsarens minneskapacitet och verktygets implementation. För stora JSON-filer (över några hundra megabyte) kan webbläsaren bli långsam eller krascha.
Kan jag konvertera JSON som har samma nyckel på olika nivåer?
Ja. Om ett objekt har en nyckel "namn" på toppnivå och ett nästlat objekt också har "namn", kommer punktnotationen att skilja dem åt (t.ex. namn och adress.namn). De blir två olika kolumner.
Varför får jag felmeddelandet ”This JSON is invalid or not table‑shaped”?
Detta inträffar när JSON-rotnivån inte är en array av objekt eller en array av arrayer. Exempel: ett enda objekt utan omgivande hakparenteser {... }, eller en primitiv typ som en sträng eller ett tal på toppnivå.
Är min data säker?
Ja. Konverteringen sker helt i din webbläsare. Ingen fil laddas upp till någon server. Du kan använda verktyget även för känslig eller företagsintern data.