JavaScript-object naar JSON: van losse syntaxis naar strikte JSON
Plak een JavaScript-object met sleutels zonder aanhalingstekens, enkele aanhalingstekens, commentaar of een komma achter het laatste item en krijg strikte JSON met escapes terug. Deze JSON converter voor JavaScript leest de tekst met een parser en voert hem nooit uit als code. Je kunt dus ook tekst uit een console, een configuratiebestand of een codevoorbeeld plakken.
Stringify JSON online: zo werkt het
- Plak het object in het vak JavaScript-object of JSON. Bij plakken wordt het meteen omgezet. Als je typt, wordt het resultaat ongeveer 300 milliseconden nadat je stopt bijgewerkt.
- Kies bij Formaat hoe het resultaat eruit moet zien: Geminimaliseerd (standaard, op één regel), 2 spaties of 4 spaties.
- Lees het resultaat onder Strikte JSON. Daaronder staan “Omgezet naar strikte JSON.” en het aantal tekens.
- Kies Kopiëren, direct onder het resultaat. De knop toont heel even Gekopieerd.
- Kies Wissen om het vak leeg te maken en opnieuw te beginnen.
Een klein voorbeeld: je plakt {name: 'Ana', tags: ['a', 'b',], id: 0xFF}. Met Geminimaliseerd is het resultaat {"name":"Ana","tags":["a","b"],"id":255}.
Welke losse JavaScript-syntaxis wordt gelezen
De tekst wordt gelezen met de JSON5-parser, die weet waarin een JavaScript-objectliteral van JSON verschilt. Elk van deze vormen wordt omgezet in plaats van geweigerd:
- Sleutel zonder aanhalingstekens:
{name: "Ana"}wordt{"name":"Ana"}. - String met enkele aanhalingstekens:
{a: 'x'}wordt{"a":"x"}. - Komma achter het laatste item:
[1, 2,]wordt[1,2]. - Commentaar:
// notitieen/* notitie */wordt verwijderd. - Hexadecimaal getal:
0xFFwordt255. - Een plus ervoor of een losse decimale punt:
+1,.5en5.worden1,0.5en5. - NaN en Infinity:
{a: Infinity}wordt{"a":null}. - Een string die met een backslash over meerdere regels loopt, wordt één string zonder regeleinde.
Aanhalingstekens, backslashes en regeleinden binnen een string krijgen een escape: 'He said "hi"' komt aan als "He said \"hi\"". Wat al geldige JSON is, gaat ongewijzigd door, afgezien van de opmaak die je koos.
JSON minify online of met 2 of 4 spaties
Het menu Formaat staat boven het resultaat. Geminimaliseerd schrijft alles op één regel zonder spaties, handig voor de body van een verzoek, testdata of een waarde die je in een string wilt plakken.
2 spaties en 4 spaties geven een ingesprongen weergave die makkelijker te lezen en te vergelijken is. Het resultaat verandert zodra je kiest, en Kopiëren neemt mee wat je ziet.
Wat niet gelezen wordt en de foutmelding
Alleen gegevens worden geaccepteerd, geen code. Als de parser stopt, verschijnt een rood vak met de titel Kan dit niet lezen, een duidelijke reden en de plek, bijvoorbeeld “Regel 1, kolom 6”. Bij {a:1 b:2} stopt de parser bij de b en vraagt hij je te controleren of er vlak ervoor een komma, dubbele punt, haakje of aanhalingsteken ontbreekt. Eindigt de tekst terwijl er nog een haakje, accolade of aanhalingsteken openstaat, dan krijg je in plaats daarvan “De tekst eindigt te vroeg.”
const x = {a: 1}: de parser stopt bij de eerste letter. Plak alleen het object.{a: 1};: hij stopt bij de puntkomma aan het eind. Haal die weg.- Een template-string met backticks wordt niet geaccepteerd. Gebruik enkele of dubbele aanhalingstekens.
undefined, een functie ofnew Date()worden niet geaccepteerd: het is code of het heeft geen JSON-vorm. Schrijf een datum als string.- Ontbreekt er een komma, dubbele punt of haakje, dan stopt de parser bij het teken na de opening en noemt hij regel en kolom.
JSON stringify JavaScript: getallen, dubbele sleutels en meer
Het resultaat komt van de eigen JSON.stringify van de browser, dus getallen zijn JavaScript-getallen. Dat heeft gevolgen die je vóór het kopiëren moet kennen:
- Gehele getallen boven
9007199254740991verliezen precisie:12345678901234567890wordt12345678901234567000. 1.0wordt1en0xFFwordt255.- NaN, Infinity en -Infinity worden
null. - Komt een sleutel twee keer voor, dan blijft de laatste waarde staan.
Is de invoer al geldige JSON en wil je hem alleen laten inspringen zonder dat er een cijfer verandert, gebruik dan “JSON formatteren”. Om JSON tegen een schema te controleren is er de “JSON-schema validator”.
Grenzen en privacy
- Tot 5.000.000 tekens. Een langere tekst wordt geweigerd met een melding die de limiet noemt.
- Bij het lezen wordt je tekst nooit uitgevoerd, dus geplakte code kan niet draaien.
- Je tekst wordt volledig op je apparaat omgezet. Er wordt niets geüpload of opgeslagen.
Veelgestelde vragen
Hoe krijg ik een JavaScript-object als JSON?
Plak het object in het vak “JavaScript-object of JSON”. Het wordt meteen bij het plakken omgezet, of ongeveer 300 milliseconden nadat je stopt met typen, en de strikte JSON verschijnt onder “Strikte JSON”. Kies “Kopiëren” om hem mee te nemen. Plak alleen het object zelf, geen regel als const data = {...};.
Hoe maak ik van enkele aanhalingstekens dubbele in JSON?
Plak de tekst. Elke string met enkele aanhalingstekens komt met dubbele eruit, en een dubbel aanhalingsteken erin krijgt een escape, dus 'He said "hi"' wordt "He said \"hi\"". Alleen strings en sleutels worden aangepast, dus een apostrof in een string met dubbele aanhalingstekens blijft zoals hij is.
Hoe haal ik de komma achter het laatste item uit JSON?
Plak de tekst. Een komma na het laatste item van een object of array, zoals in [1, 2,], wordt bij invoer geaccepteerd en blijft weg uit het resultaat onder “Strikte JSON”. Verder verandert er niets aan de gegevens.
Kan JSON sleutels zonder aanhalingstekens of commentaar hebben?
Strikte JSON niet: elke sleutel en elke string heeft dubbele aanhalingstekens nodig, en er bestaat geen syntaxis voor commentaar. JavaScript-objecten en configuratiebestanden hebben vaak allebei. Deze tool leest ze, schrijft de sleutels met dubbele aanhalingstekens en laat het commentaar weg, zodat het resultaat geldige JSON is.
JSON5 naar JSON: wat is het verschil tussen JSON en JSON5?
JSON5 is een losse uitbreiding van JSON die sleutels zonder aanhalingstekens, strings met enkele aanhalingstekens, komma’s achter het laatste item, commentaar, hexadecimale getallen en nog een paar JavaScript-achtige vormen toestaat. Deze tool leest die syntaxis en schrijft gewone JSON, zodat een JSON5-document zonder niet-ondersteunde waarden JSON wordt die elke parser accepteert.
Hoe minify ik JSON of laat ik hem met 2 of 4 spaties inspringen?
Gebruik het menu “Formaat” boven het resultaat. “Geminimaliseerd”, de standaard, geeft één regel zonder spaties. 2 spaties en 4 spaties geven een ingesprongen versie. Het resultaat en wat “Kopiëren” meeneemt veranderen zodra je een andere optie kiest.
Waarom staat er “Kan dit niet lezen”?
De tekst is geen object, array of waarde die de parser begrijpt. Het rode vak noemt de plek waar hij stopte, bijvoorbeeld “Regel 1, kolom 6”, en wat je moet controleren: een komma, dubbele punt, haakje of aanhalingsteken dat vlak ervoor ontbreekt, of een haakje, accolade of aanhalingsteken dat aan het eind nog openstaat. Instructies zoals const x = {...}, een puntkomma aan het eind, backtick-strings, undefined, functies en new Date() worden niet geaccepteerd. Plak alleen het object.
Wordt het JavaScript dat ik plak uitgevoerd?
Nee. De tekst wordt door een parser (JSON5) gelezen en nooit door eval, dus niets van wat je plakt kan draaien. Daarom wordt code ook geweigerd: een functie, een variabelenaam of new Date() is een fout en niet iets om uit te rekenen.
Waarom is mijn grote getal veranderd, en wat gebeurt er met NaN?
Getallen worden JavaScript-getallen, die alleen tot 9007199254740991 exact zijn. 12345678901234567890 komt eruit als 12345678901234567000 en 1.0 als 1. Wil je elk cijfer van een lang ID behouden, zet het dan tussen aanhalingstekens in je invoer of gebruik “JSON formatteren”, dat getallen precies overneemt zoals ze zijn geschreven. NaN, Infinity en -Infinity worden null, omdat JSON er geen schrijfwijze voor heeft. Komt een sleutel twee keer voor, dan wint de laatste waarde.
JavaScript-object naar JSON-string: is dit hetzelfde als JSON.stringify, en hoe groot mag de tekst zijn?
Het resultaat wordt met JSON.stringify gemaakt, dus de uitvoerregels zijn dezelfde. Het verschil zit in de invoer: JSON.stringify heeft een echt object in je code nodig, terwijl je hier de tekst van het object plakt, ook met losse syntaxis. Je kunt tot 5.000.000 tekens plakken. De omzetting gebeurt op je apparaat en er wordt niets geüpload of opgeslagen.
Aanbevolen
-
Leuchtturm1917 notitieboek A5, stippenSchets de request body eerst op papier voordat je hem plakt
-
Logitech Lift Vertical ergomuisOntlast je pols tijdens lange API-testsessies
-
Soundcore Q30 Noise-Cancelling KoptelefoonRust om je te concentreren terwijl je nog een configbestand opschoont
Help de tools gratis te houden. ✨
Afbeeldingen dienen ter illustratie. Als Amazon-Partner verdien ik aan in aanmerking komende aankopen.