UTILS.
100% in de browser
{ }

JS-object naar strikte JSON

Repareer een losse JavaScript-objectletterlijk — sleutels zonder aanhalingstekens, enkele aanhalingstekens, komma's aan het einde, commentaren — naar strikte geldige JSON, zonder eval.

— uitvoer verschijnt hier —

Over deze tool

De tool JS-object naar strikte JSON repareert een losse JavaScript- of JSON5-achtige objectletterlijk tot strikte, geldige JSON. Het is gebouwd op een met de hand geschreven tokenizer — het gebruikt nooit eval of new Function — dus het is veilig onder een strikt Content Security Policy en veilig om onvertrouwde tekst in te plakken. Alles draait in je browser.

Het accepteert de dingen die echte JSON afwijst: identifier-sleutels zonder aanhalingstekens, strings met enkele aanhalingstekens, komma's aan het einde vóór ] of }, // regel- en /* blok */-commentaren, hexadecimaal (0xFF), octale en binaire literals, getallen met voorloop-plus en voorloop-punt (+1, .5), en de waarden undefined, NaN en Infinity. Sleutels worden opnieuw van dubbele aanhalingstekens voorzien, strings worden correct opnieuw geëscaped, commentaren en komma's aan het einde worden verwijderd, en getallen worden genormaliseerd naar gewone JSON-getallen. Je kiest hoe undefined behandeld wordt (omzetten naar null of de sleutel weglaten) en niet-eindige getallen (omzetten naar null of een fout genereren), waarna de waarde opnieuw wordt geserialiseerd met JSON.stringify op de inspringing van je keuze — 2 spaties, 4 spaties, tabs of geminificeerd.

Wanneer de invoer niet geparseerd kan worden, meldt de tool de eerste syntaxfout met regel en kolom zodat je het probleem snel kunt vinden. Dit vult een strikte JSON-formatter aan, die losse invoer simpelweg afwijst — hier is het doel om gekopieerde console-uitvoer, config-snippets en met de hand bewerkte objecten te redden tot JSON die elke parser accepteert.

Veelgestelde vragen

Welke losse syntaxis accepteert het?
Sleutels zonder aanhalingstekens, strings met enkele aanhalingstekens, komma's aan het einde, // en /* */-commentaren, hex/octale/binaire getallen, getallen met voorloop-plus en voorloop-punt, en de literals undefined, NaN en Infinity — de veelvoorkomende dingen die gekopieerde JS-objecten ongeldig maken als JSON.
Gebruikt het eval om te parseren?
Nee. Het gebruikt een met de hand geschreven tokenizer en recursive-descent parser, nooit eval of new Function, zodat het werkt onder een strikt Content Security Policy en veilig is voor onvertrouwde invoer. Het produceert alleen ooit data, en voert nooit code uit.
Hoe worden undefined, NaN en Infinity afgehandeld?
JSON heeft zulke waarden niet. Je kiest: undefined kan null worden of zijn sleutel laten weglaten, en NaN/Infinity kunnen null worden of een fout genereren. Dit houdt de uitvoer hoe dan ook strikt geldige JSON.
Wat gebeurt er wanneer de invoer ongeldig is?
De parser stopt bij de eerste echte syntaxfout en meldt deze met de regel en kolom waar deze optrad, zodat je het overtredende teken kunt lokaliseren en repareren in plaats van te gokken.

Meer tools