tigtools

JSON-validering

Indsæt JSON for at kontrollere syntaksen i forhold til JSON-standarden. Fejl markeres præcist med en markør og en enkel forklaring.

Kører i din browser Ingen tilmelding

Resultatet vises her, så snart du indsætter JSON.

Sådan bruger du det

  1. Indsæt din JSON i feltet, åbn en fil, eller tryk på “Prøv et eksempel” for at se en fejlrapport.
  2. Læs resultatet: en grøn meddelelse for gyldig JSON eller den første fejl med linje, kolonne og en markør under problemet.
  3. Ret den fejl, som tipset beskriver, og tjek igen; resultatet opdateres, mens du skriver.
  4. For gyldig JSON kan du se statistikken: rodtype, antal nøgler, indlejringsdybde og størrelse i byte.

Sådan fungerer det

Validatoren kontrollerer syntaksen i forhold til JSON-standarden (RFC 8259 / ECMA-404) ved hjælp af browserens egen JSON-parser, så et dokument, der består her, accepteres af JavaScripts JSON.parse og af standardkonforme parsere i andre sprog. Når parsing mislykkes, gennemgår en streng checker, der er skrevet til dette værktøj, teksten én gang for at finde den første fejl og dens nøjagtige linje og kolonne og viser derefter linjen med en ^-markør under problemet.

Henvisningerne fokuserer på de fejl, folk faktisk begår, når JSON skrives i hånden eller kopieres fra JavaScript: et komma efter det sidste element, strenge i enkelte anførselstegn, nøgler uden anførselstegn, // eller /* */ kommentarer, værdier som NaN, Infinity eller undefined, rå linjeskift inde i strenge og to JSON-dokumenter indsat efter hinanden (som i JSON Lines-filer). Kun den første fejl rapporteres, fordi én fejl ofte forvirrer alt efter den.

Værktøjet kontrollerer kun syntaks. Det validerer ikke mod et JSON Schema, så det kan ikke fortælle dig, om et påkrævet felt mangler. Det advarer heller ikke om duplikerede nøgler: Standarden tillader dem, og de fleste parsere beholder den sidste værdi. Statistik tæller nøgler i hvert objekt på hvert niveau; dybde er 1 for et fladt objekt eller array og vokser med én for hvert niveau af indlejring.

Eksempler

Konfiguration kopieret fra JavaScript

{name: 'demo', debug: true,} fejler på linje 1, kolonne 2 med “Objektnøgler skal stå i dobbelt anførselstegn”. Når nøglen er skrevet med dobbelt anførselstegn, peger næste kørsel på strengen med enkelte anførselstegn og derefter på det efterfølgende komma.

En logfil med ét objekt pr. linje

Indsætter du to linjer som {"id":1} og {"id":2}, rapporteres “mere indhold efter slutningen af JSON-værdien” på linje 2. Hver linje er gyldig JSON i sig selv (JSON Lines), men tilsammen skal de pakkes ind i [ ] og adskilles med et komma.

Tjek af en API-nyttelast

Et svar på 2 MB valideres på et øjeblik og viser rodtype: Array, 1.500 elementer på øverste niveau og en indlejringsdybde på 4 – et hurtigt fornuftstjek, før du skriver kode imod det.

Ofte stillede spørgsmål

Validerer dette mod et JSON Schema?

Nej. Den kontrollerer, at teksten er velformet JSON. Kontrol af obligatoriske felter, typer eller formater kræver en JSON Schema-validator, som dette værktøj ikke indeholder.

Hvorfor vises der kun én fejl?

Efter den første syntaksfejl kan en parser ikke vide, hvad forfatteren mente, så senere “fejl” er ofte følgevirkninger af den første. Ret det rapporterede problem, så vises den næste eventuelle fejl med det samme.

Er kommentarer eller efterstillede kommaer nogensinde gyldige?

Ikke i JSON. Formater som JSON5 og JSONC (bruges i nogle editorers indstillingsfiler) tillader dem, men standard JSON-parsere afviser dem, så de rapporteres som fejl her.

Er en enkelt værdi som 42 eller "hello" gyldig JSON?

Ja. Siden RFC 7159 kan enhver JSON-værdi være roden, ikke kun objekter og arrays. Nogle ældre værktøjer og API'er forventer stadig et objekt eller array på øverste niveau.

Hvorfor kan kolonnen afvige fra min editors kolonne?

Kolonner tælles i UTF-16-kodeenheder, på samme måde som JavaScript tæller strenglængde. Emoji og nogle sjældne tegn tæller som to, og et tabulatortegn tæller som én kolonne, mens editorer kan vise det bredere.

Privatliv

Valideringen foregår udelukkende i din browser. Den JSON, du indsætter eller åbner, uploades ikke, gemmes ikke og indgår ikke i analyser.