JSON formatter och validator

Acrafto Team Utvecklare
Uppdaterad
Väntar på indata. Klistra in JSON ovan eller släpp en .json-fil.

Klistra in valfri JSON i fältet ovan så kontrollerar den här JSON-formattern och validatorn den medan du skriver. Giltig indata formateras snyggt med det indrag du väljer, eller minifieras till en enda rad. Ogiltig indata får ett exakt felmeddelande med rad och kolumn, ett markerat utdrag och, för de vanligaste misstagen, en rättning med ett klick. Allt körs i din webbläsare, så API-svar, konfigurationsfiler och exporter lämnar aldrig din dator.

Vad den här JSON-formattern gör

  • Formatera JSON (beautify) med 2 mellanslag, 4 mellanslag eller tabbar. Utdata behåller den ursprungliga nyckelordningen om du inte kryssar i Sortera nycklar.
  • Minifiera JSON genom att ta bort alla mellanslag och radbrytningar. Storleksvisningen under resultatet visar hur många byte du sparade.
  • Validera JSON live mot RFC 8259, den gällande JSON-standarden. Statusraden blir grön i samma stund som dokumentet är korrekt.
  • Rätta vanliga fel automatiskt: avslutande kommatecken, enkla citattecken, nycklar utan citattecken, kommentarer, True, None och NaN i Python-stil samt tal som .5 eller +1.
  • Läs in filer med knappen Öppna fil eller genom att släppa en .json-fil på indatafältet. Ladda sedan ner resultatet eller skicka tillbaka det till indata för en ny omgång.

JSON-validator: varför felmeddelandet betyder mer än den röda färgen

De flesta onlinevalidatorer säger bara att något är fel. Webbläsarna är inte mycket bättre: JSON.parse i Chrome rapporterar Unexpected token } in JSON at position 148, medan Firefox säger expected property name or '}', och ingen av dem talar om vilken rad du ska titta på. Det här verktyget har en egen parser som minns var varje token börjar. När den stannar får du rad och kolumn, ett utdrag ur raden med tecknet ^ under det felaktiga tecknet och en ledtråd på vanlig svenska, till exempel Ett kommatecken mellan två egenskaper saknas troligen. Knappen Gå till felet flyttar markören direkt till den positionen i indata.

De vanligaste misstagen vi ser i inklistrade dokument:

IndataProblemKorrekt JSON
{'name': 'Ada'}enkla citattecken{"name": "Ada"}
{name: "Ada"}nyckel utan citattecken{"name": "Ada"}
[1, 2, 3,]avslutande kommatecken[1, 2, 3]
{"a": 1 "b": 2}kommatecken saknas{"a": 1, "b": 2}
{"ok": True}Python-literal{"ok": true}
{"x": 007}inledande nolla{"x": 7} eller {"x": "007"}
// commentkommentarinte tillåtet i JSON

Knappen Rätta åt mig reparerar alla dessa utom det saknade kommatecknet och den inledande nollan. Rättningen är medvetet försiktig: den gissar aldrig var ett saknat kommatecken hör hemma, eftersom ett kommatecken på fel ställe ändrar datans betydelse, och 007 kan vara menat som talet 7 eller som en kod. I de fallen får du i stället den exakta positionen.

Stora tal, nyckelordning och annat som brukar gå sönder

Många formatterare fungerar genom att anropa JSON.parse och sedan JSON.stringify. Den rundturen skadar data utan förvarning. Ett Twitter- eller Snowflake-ID som 1234567890123456789 överskrider gränsen 2^53 för tal i JavaScript och kommer tillbaka som 1234567890123456800. Värdet 1.0 blir 1 och 1e3 blir 1000. Den här formattern konverterar aldrig tal till flyttal. Den kopierar varje literal exakt som den skrevs, så utdata är en trogen omformatering av indata och inte en omtolkning. Detsamma gäller escape-sekvenser i strängar: "\u00e9" förblir "\u00e9" och görs inte om till "é".

Nyckelordningen bevaras också. Enligt JSON-specifikationen är medlemmarna i ett objekt oordnade, men konfigurationsfiler, testfixturer och kodgranskningar blir mycket lättare att läsa när ordningen är stabil. Om du föredrar en kanonisk form, till exempel för att jämföra två API-svar i ett diff-verktyg, slår du på Sortera nycklar. Då listar båda dokumenten sina egenskaper i alfabetisk ordning på varje nivå.

Formatera JSON eller minifiera JSON: när passar vilket?

Snyggt formaterad JSON är till för människor. Använd den när du granskar ett API-svar, skriver en package.json, tsconfig.json eller ett OpenAPI-dokument, eller när du sparar fixturer i ett repository där diffar ska visa en ändring per rad. Två mellanslag är konventionen i JavaScript-världen, fyra mellanslag är vanligt i Python- och .NET-projekt, och med tabbar kan varje läsare välja sin egen bredd.

Minifierad JSON är till för maskiner. Blanktecken utgör normalt 20 till 40 procent av ett formaterat dokument, så när de tas bort krymper data som skickas till webbläsare, värden som lagras i Redis eller i en databaskolumn och data-*-attribut som bäddas in i HTML. Komprimering med gzip minskar en del av skillnaden, men den minifierade versionen blir ändå mindre efter komprimering. Storleksvisningen under resultatet visar den exakta skillnaden för ditt dokument.

Arbeta med JSON i terminalen och i editorer

För filer som du bearbetar ofta är ett kommandoradsverktyg snabbare än en webbplats. jq . file.json formaterar snyggt, jq -c . file.json minifierar och python -m json.tool file.json fungerar överallt där Python är installerat. Visual Studio Code formaterar JSON med Shift+Alt+F och validerar mot ett schema när du lägger till en $schema-egenskap. Den här sidan är till för de andra fallen: ett svar som du kopierat från nätverksfliken, en loggrad, ett konfigurationsutdrag från en wiki eller en snabb kontroll på en dator där du inte kan installera något.

Relaterade verktyg på webbplatsen: Base64-kodaren och avkodaren avkodar payload-delen av en JWT, som är JSON kodad i Base64url. Omvandlaren för Unix-tidsstämplar gör om createdAt-talen som finns i de flesta API-svar till läsbara datum, och UUID-avkodaren visar version och tidsstämpel för identifierare i dina data. Fler verktyg hittar du i kategorin Utvecklare.

Vanliga frågor

Laddas min JSON upp till en server? Nej. Tolkning, formatering och rättning körs helt i din webbläsare i JavaScript. När sidan har laddats kan du stänga av nätverket och verktyget fortsätter att fungera. Ingenting loggas eller sparas.
Varför avvisar validatorn kommentarer när min editor accepterar dem? Kommentarer togs medvetet bort ur JSON av formatets upphovsman, Douglas Crockford, för att formatet inte skulle användas för parserdirektiv. Filer som tsconfig.json eller .vscode/settings.json är tekniskt sett JSONC, en utökning av JSON som editorer stöder. Strikta parsrar i API:er, databaser och de flesta programmeringsspråk avvisar dem. Rättningsknappen tar bort kommentarer så att resultatet blir giltigt överallt.
Kan jag formatera JSON Lines eller flera objekt på en gång? Ett JSON-dokument innehåller exakt ett värde. Om du klistrar in flera objekt åtskilda av kommatecken eller radbrytningar stannar validatorn vid det första extra värdet. Omge dem med hakparenteser så att de blir en array och formatera sedan. Rättningsknappen gör inte detta automatiskt, eftersom den inte kan veta om indata var tänkt som ett enda dokument.
Hur stort dokument kan jag formatera? Det finns ingen fast gräns. Dokument på några megabyte formateras på långt under en sekund på en bärbar dator. Syntaxmarkeringen stängs av över ungefär 400 kB så att sidan förblir responsiv, men kopiering och nedladdning fungerar fortfarande.
Ändras datan när nycklarna sorteras? Nej. Objekt i JSON är per definition oordnade, se artikeln om JSON på Wikipedia, så en parser läser det sorterade och det ursprungliga dokumentet som samma värde. Arrayer sorteras aldrig om, eftersom deras ordning är en del av datan.
Hur escapar jag JSON för att bädda in den i en sträng? Minifiera först och escapa sedan varje omvänt snedstreck och dubbelt citattecken. Många språk har detta inbyggt: JSON.stringify(JSON.stringify(obj)) i JavaScript eller json.dumps(json.dumps(obj)) i Python ger en JSON-sträng som innehåller JSON-texten.

Jag skulle uppskatta om du kunde dela dessa sidor med vänner, bokmärka dem eller länka till dem. Tack! 🙏