JSON-formatter
JSON verfraaien, verkleinen en valideren - en als het niet kan worden geparset, precies zien waar.
Invoer
0 tekensUitvoer
JSON verfraaien, verkleinen en valideren - en als het niet kan worden geparset, precies zien waar.
JSON dat uit een API-log of een configuratiebestand komt, is meestal één lange regel, en JSON dat niet te parsen is, mislukt meestal ergens die je niet ziet. Dit tool laat het inspringen zodat je het kunt lezen, minimaliseert het wanneer je het compact nodig hebt, en vertelt je bij kapotte JSON de regel en kolom en toont je die regel.
Meestal ben je hier niet om JSON mooi te maken - je bent hier omdat iets het heeft afgewezen zonder te zeggen waarom. De parser rapporteert de regel, de kolom en wat hij verwachtte, en het tool drukt die regel af samen met de twee eromheen. Een ontbrekende komma vierhonderd regels diep in een configuratie is een reparatie van dertig seconden zodra je weet waar hij zit.
JSON heeft geen van beide ooit toegestaan, maar de bestanden die mensen je daadwerkelijk geven - tsconfig, VS Code-instellingen, alles wat handmatig bewerkt is - staan er vol mee. Het aanvinken van de optie verwijdert ze vóór het parsen, en het tool vermeldt vervolgens hoeveel commentaarregels en hoeveel komma's het heeft verwijderd. Het is optioneel en wordt precies gerapporteerd omdat een opmaker die je document stilletjes wijzigt erger is dan een die het weigert.
Het raadt niet wat je bedoelde. Afgezien van de twee verwijderingen hierboven wordt niets hersteld: een niet-gesloten accolade, een sleutel tussen enkele aanhalingstekens of een sleutel zonder aanhalingstekens wordt gerapporteerd, niet herschreven. Sleutels sorteren en opnieuw inspringen veranderen nooit de volgorde van een array en nooit een string. De volgende sectie noemt de paar gevallen waarin de uitvoer toch kan afwijken van wat je plakte.
Je JSON wordt geparsed en opnieuw uitgeschreven, dus een paar dingen komen genormaliseerd terug. Getallen worden opnieuw geschreven: 1.50 wordt 1.5, 1E3 wordt 1000.0 en -0 wordt 0, en een decimaal getal met meer cijfers dan een 64-bits float kan bevatten wordt afgerond (0.1000000000000000055 wordt 0.1). Gehele getallen blijven exact tot 4.300 cijfers (langere worden geweigerd). Herhaalt een object een sleutel, dan blijft alleen de laatste waarde over, zonder waarschuwing. NaN, Infinity en -Infinity worden geaccepteerd en doorgegeven, hoewel standaard-JSON (RFC 8259) ze niet toestaat, en een getal dat te groot is voor een float, zoals 1e400, komt eruit als Infinity. Als iets hiervan uitmaakt voor het systeem dat je voedt, controleer het dan zelf voordat je een foutloos resultaat vertrouwt.
Het wordt naar de server gestuurd om te worden geparsed en direct teruggestuurd in hetzelfde antwoord. Niets wordt op schijf geschreven, gecachet of gelogd, en het gebruiksrecord bevat alleen aantallen - grootte, nestdiepte, gekozen modus - nooit het document.
Meestal door commentaar, afsluitende komma's, enkele aanhalingstekens of sleutels zonder aanhalingstekens - allemaal gebruikelijk in configuratiebestanden en geen van alle geldige JSON. Vink "commentaar en afsluitende komma's toestaan" aan voor de eerste twee; de andere zijn echt ongeldig en moeten worden gecorrigeerd.
Tot 2.000.000 tekens per verzoek; langere invoer wordt geweigerd met de exacte lengte erbij. Voor bestanden van die omvang is een opdrachtregeltool zoals jq het betere instrument.
Log-pipelines en streaming-loaders lezen één JSON-object per regel in plaats van één grote array. Kies het en een array op het hoogste niveau komt terug als één compact record per regel.
Nee. De volgorde van objectsleutels heeft geen betekenis in JSON, en de volgorde van een array - die wel betekenis heeft - wordt nooit aangeraakt. Sorteren bestaat zodat twee versies van hetzelfde document zonder ruis kunnen worden vergeleken.
Sla hem in Excel voor Microsoft 365 op als .json-bestand en kies Data > Get Data > From File > From JSON (Gegevens > Gegevens ophalen > Uit bestand > Uit JSON). Power Query opent hem: een array op het hoogste niveau verschijnt als List, To Table (Naar tabel) maakt er een kolom met Records van, en de uitvouwknop (twee pijlen) in de kolomkop zet elke sleutel in een eigen kolom; een geneste array uitvouwen geeft een rij per item. Power Query heeft precies een geldig JSON-document nodig, dus los fouten eerst hier op, waar je regel en kolom ziet, en sla dan de uitvoer van Verfraaien of Minificeren op; de uitvoer JSON Lines is bedoeld voor logtools. Deze tool zet JSON zelf niet om naar CSV of Excel.
Python heeft een controle ingebouwd: python -m json.tool data.json toont het document met 4 spaties inspringing, of stopt met een melding als Expecting ',' delimiter: line 3 column 3. Met jq geïnstalleerd maakt jq . data.json het netjes op en controleert jq empty data.json alleen, zonder uitvoer als het bestand geldig is. Geen van beide accepteert opmerkingen of afsluitende komma's, dus een configuratiebestand met die dingen faalt daar; plak het hier en vink "Opmerkingen en afsluitende komma's toestaan" aan om te zien wat er is verwijderd.
De parser verwachtte een objectsleutel en vond iets anders. Meestal staan de sleutels tussen enkele aanhalingstekens of helemaal niet, zoals {'name': 'Asha'} gekopieerd uit Python of JavaScript, dat stopt op regel 1, kolom 2: JSON vereist dubbele aanhalingstekens rond elke sleutel en elke string, en deze tool herschrijft aanhalingstekens nooit, dus pas ze zelf aan. Dezelfde melding bij een sluitende accolade, zoals bij {"a": 1,}, wijst op een afsluitende komma; vink "Opmerkingen en afsluitende komma's toestaan" aan om die te verwijderen. Expecting value bij True, False of None wijst op Python-waarden: JSON schrijft true, false en null in kleine letters. In Python geeft json.dumps(data) geldige JSON en print(data) niet. Fouten worden getoond zoals de Python-parser ze formuleert, in het Engels, zodat de melding letterlijk op te zoeken is.
De parser heeft een volledige JSON-waarde gelezen en daarna nog meer tekst gevonden. Veelvoorkomende oorzaken: een log in JSON Lines (NDJSON) met één object per regel, dat stopt op regel 2, kolom 1; twee documenten achter elkaar geplakt; of een //-opmerking na de laatste sluitende accolade, die "Opmerkingen en afsluitende komma's toestaan" verwijdert. Deze tool controleert één document tegelijk: plak één record, of zet de records tussen [ ] met een komma ertussen; met JSON Lines worden ze daarna weer één per regel uitgeschreven.