Aller au contenu
jsonbeautifiers
Français
V8 Vérifié en exécutant l’analyseur sur Node v24.15.0, V8 13.6.233.17.

Unexpected end of JSON input

L’analyseur a atteint la fin de l’entrée alors qu’il en attendait encore. Soit la chaîne était vide au départ, soit une valeur est restée ouverte et le document a été tronqué. Notez que ce message ne porte aucune position, et c’est précisément ce qui le distingue des erreurs qui en portent une.

Collez votre JSON et voyez exactement où il casse

Entrée

Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même

Ce qui le provoque réellement

Classés selon la fréquence à laquelle chacun se révèle être la réponse.

  1. 01 La chaîne est vide

    JSON.parse("") lève l’erreur immédiatement. Une chaîne vide n’est pas du JSON valide. Cela vient en général d’un HTTP 204, d’une réponse sans corps, ou d’une clé localStorage écrite comme chaîne vide.

    Casse

    JSON.parse(localStorage.getItem('draft'))

    Fonctionne

    const raw = localStorage.getItem('draft');
    const draft = raw ? JSON.parse(raw) : null;
  2. 02 Le corps de la réponse a déjà été consommé

    Le corps d’un Response ne peut être lu qu’une fois. Appeler res.text() puis res.json() sur la même réponse vous donne une chaîne vide la seconde fois.

    Casse

    const text = await res.text();
    const data = await res.json();   // body already used

    Fonctionne

    const text = await res.text();
    const data = text ? JSON.parse(text) : null;
  3. 03 Le document est tronqué

    Une connexion coupée, une limite de taille de corps (Express est à 100 ko par défaut), une lecture de flux terminée trop tôt, ou un fichier écrit pendant sa lecture. Si l’entrée s’arrête au milieu d’un objet, notre validateur nomme chaque crochet resté ouvert et l’endroit où chacun a commencé.

    Casse

    {"users": [{"id": 1}, {"id":

    Fonctionne

    {"users": [{"id": 1}, {"id": 2}]}
  4. 04 Le cache npm ou yarn est corrompu

    Une bonne part des recherches sur cette chaîne concernent npm et non du code applicatif. Un fichier de cache écrit partiellement produit la même erreur pendant l’installation. Lancez npm cache clean --force, supprimez node_modules et package-lock.json, puis réinstallez.

  5. 05 Vous avez analysé le résultat d’une fonction qui n’a rien renvoyé

    JSON.parse(undefined) donne un autre message ("undefined" is not valid JSON), mais une fonction qui renvoie une chaîne vide plutôt qu’undefined atterrit ici.

La même erreur dans d’autres environnements

Le problème de fond est identique ; seule la formulation change. Si un collègue signale l’un de ces messages, il regarde exactement la même chose que vous.

Python Expecting value: line 1 column 1 (char 0)
Python, truncated object Expecting ',' delimiter: line 1 column 28 (char 27)

Questions fréquentes

Pourquoi n’y a-t-il ni ligne ni colonne dans ce message ?
Parce qu’il n’y a aucune position à désigner. L’échec, c’est que l’entrée s’est terminée : l’endroit fautif est donc la fin du document. Notre validateur le signale comme fin d’entrée et liste les crochets encore ouverts.
JSON.parse(null) lève-t-il cette erreur ?
Non. JSON.parse(null) convertit null en la chaîne "null" et renvoie null, ce qui surprend. C’est la chaîne vide qui lève l’erreur.

Corrigez-le maintenant

Collez le payload dans l’outil ci-dessus, ou allez directement à celui conçu pour ce travail.

Trouver le crochet non fermé