Le JSON ressemble à JavaScript, mais sa grammaire portable est volontairement plus petite. Noms et chaînes utilisent les guillemets doubles, les nombres suivent une grammaire décimale finie et seuls quatre espaces sont reconnus hors jetons. Commentaires et virgules finales sont pratiques dans certaines configurations, mais les accepter revient à analyser un autre langage. JSONClear garde la frontière visible : il valide le JSON strict et indique la première position où la source ne peut plus suivre cette grammaire.
Noms et chaînes exigent des guillemets doubles
`{'name':'Ada'}` peut être compris en JavaScript, mais ce n’est pas du JSON. Le JSON strict est `{"name":"Ada"}`. `{name:"Ada"}` est également hors grammaire. JSONClear ne devine pas les guillemets et ne réécrit pas les apostrophes du texte. Il s’arrête au nom afin que l’auteur corrige volontairement la source et conserve le contenu voulu.
Commentaires et virgules finales appartiennent à d’autres langages
Après un membre ou un élément, le JSON strict n’autorise une virgule que si un autre suit. Ainsi `{"a":1,}` et `[1,2,]` échouent. `// note` et `/* note */` ne sont pas des espaces. Une réparation automatique pourrait masquer un élément tronqué ou changer une chaîne légitime. JSONClear indique la frontière. Pour du JSON5 ou un module JavaScript, utilisez un outil qui nomme réellement ce langage.
Les nombres JSON excluent les valeurs spéciales
Le JSON accepte des jetons décimaux finis comme `-0`, `12.50` et `1e-9`. Il refuse `NaN`, `Infinity`, `0x10`, le signe plus initial et les zéros initiaux comme `01`. Ces formes appartiennent à JavaScript ou sont ambiguës. JSONClear valide les caractères sans conversion en Number. La grammaire reste stricte et les longs entiers ou décimales valides ne sont pas réécrits.