Validera JSON-syntax
- Panel
- Dokumentation
- API
Vad används en JSON-validator till?
En JSON-validator har en mer blygsam, men mer precis roll än en formaterare: den skriver inte om något. Den tar en sträng och svarar på en binär fråga: är den här texten JSON som följer RFC 8259? Om ja, lämnar verktyget tillbaka kontrollen. Om nej, anger det exakt rad, kolumn och ett utdrag av JSON:en kring problemet, för att hjälpa utvecklaren att rätta omedelbart.
I praktiken är det verktyget man använder så snart en parser någonstans returnerar ett kryptiskt
felmeddelande av typen SyntaxError: Unexpected token } in JSON at position 217. I stället för att
räkna tecken för hand i en editor, klistrar man in hela strängen, läser positionen och ser
det felaktiga utdraget.
Validering och formatering: två olika operationer
De två förväxlas ofta. Vår JSON-formaterare tar giltig JSON och
skriver om den med läsbar indentering. Validatorn, däremot, nöjer sig med ett syntaktiskt utlåtande. Den
utför ingen semantisk validering: den vet inte om värdet i ett email-fält
ser ut som en e-postadress, eller om strukturen motsvarar ett JSON Schema. För det använder man
dedikerade verktyg (ajv i Node, justinrainbow/json-schema i PHP).
Den klassiska kedjan vid debug är: validera först (verktyget visar syntaxfelet), formatera sedan (den nu giltiga payloaden blir läsbar), jämför till sist med en annan referenspayload via vår JSON-komparator.
De vanligaste JSON-felen
- Efterföljande kommatecken (trailing comma):
{"a": 1, "b": 2,}. Tolereras av JavaScript, ECMAScript och JSON5; avvisas av ren JSON. Det är fel nr 1 när man kopierar och klistrar in från en kodeditor. - Apostrofer i stället för dubbla citattecken:
{'a': 1}är ogiltigt. JSON accepterar bara dubbla citattecken, kring både nycklar och strängvärden. - Ociterade nycklar:
{a: 1}, giltig JavaScript-syntax men ogiltig JSON. - Icke-escapade kontrolltecken i en sträng: en rå radbrytning, en
tabb. JSON kräver
\n,\t,\r. - Kommentarer:
// commentaireeller/* */. Accepterade i JSONC (VS Code-config) eller JSON5, avvisade i ren JSON. - Felaktig kodning: en UTF-8 BOM i början av filen, latin-1-innehåll dåligt konverterat. Validatorn returnerar ofta ett generiskt meddelande för dessa fall.
- Oavslutad struktur: en
{eller[utan stängning, vanligt när man avhugger en payload vid kopiering.
Hur validatorn lokaliserar felet
Verktyget använder json_decode() i PHP med flaggan JSON_THROW_ON_ERROR. PHP
returnerar ett meddelande som innehåller en position i bytes (position 217), som vi konverterar till
ett par rad/kolumn genom att räkna radbrytningar före offseten. Ett utdrag på cirka 80 tecken klipps
sedan kring positionen för att ge sammanhang. Det räcker i allmänhet för att hitta
felet: ett felplacerat citattecken, ett extra kommatecken, en saknad klammer.
Observera: positionen som PHP rapporterar är inte alltid exakt det felaktiga tecknet. Den ligger
ofta efter felet, vid den punkt där parsern gav upp. Om utdraget visar "name":
"Alice", } är det verkliga felet kommatecknet, inte klammern.
Typiska användningsfall
- Korrupt konfiguration:
composer.json,package.json,tsconfig.jsonsom hindrar ett bygge från att starta. Man klistrar in, ser raden, rättar. - Avhuggen API-respons: en proxy har klippt payloaden. Strukturen är inte avslutad, validatorn flaggar det.
- Webhook-payload: en tredjepartstjänst skickar dåligt formad JSON. Validatorn gör det möjligt att se problemet på avsändarsidan utan att dyka ner i applikationskoden.
- JSON byggd genom konkatenering: praxis att undvika men vanligt, särskilt i bash eller i SQL. Validatorn avslöjar icke-escapade dubbla citattecken.
Begränsningar hos verktyget
Validatorn utför inte validering mot ett schema. Den säger inte att fältet email saknas,
att värdet inte är ett heltal eller att den förväntade arrayen inte har rätt längd.
För sådana strukturella kontroller använder man JSON Schema. Validatorn rättar inte heller JSON:en:
den försöker inte lägga till en saknad klammer eller ta bort ett överflödigt kommatecken. Det är ett val
: automatisk korrigering döljer alltför ofta verkliga fel.
Vanliga frågor
Vad är skillnaden mot en linter?
En linter går längre: den kontrollerar också stilregler (alfabetisk ordning, namnkonventioner), upptäcker duplicerade värden, föreslår förbättringar. Validatorn håller sig till syntaktisk överensstämmelse.
Min JSON är giltig, men min applikation avvisar den?
Kontrollera kodningen (UTF-8 utan BOM), serverns storleksgräns, förväntade typer. En JSON som är syntaktiskt korrekt kan ändå sakna överensstämmelse med applikationsschemat.
Sparar validatorn min JSON?
Nej. Behandlingen är synkron på serversidan, utan persistens. För mycket känsliga data,
föredra ändå en lokal validering via jq eller ett PHP-skript.
Exempelförfrågan
curl -X POST https://cdrn.fr/api/v1/tools/json-validator/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Indatasschema
| Fält | Typ | Obligatorisk | Standard |
|---|---|---|---|
input |
text | ✓ | – |
Slutpunkter
GET https://cdrn.fr/api/v1/tools- listar alla tillgängliga verktygGET https://cdrn.fr/api/v1/tools/json-validator- hämtar schemat för detta verktygPOST https://cdrn.fr/api/v1/tools/json-validator/execute- kör detta verktyg med en JSON-payload