Expecting value: line 1 column 1 (char 0)

Python Erreur courante

Explication

L'erreur `json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)` survient quand vous essayez d'analyser comme du JSON un contenu qui **n'en est pas** dès le premier caractère : le plus souvent une **chaîne vide**, une **page HTML d'erreur**, ou une réponse d'API qui n'a pas renvoyé de JSON. ```python import json data = json.loads("") # chaîne vide → rien à analyser # json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ```

Causes courantes

- **Réponse vide** (corps de la requête HTTP vide). - **Réponse HTML** (page d'erreur 404/500) parsée comme du JSON. - **Mauvais code de statut** (l'API a renvoyé une erreur, pas les données). - **Guillemets simples** au lieu de doubles (`{'a': 1}` n'est pas du JSON valide). - **BOM** ou caractères parasites en tête de fichier.

1. Inspectez le contenu réel avant de parser

import requests
r = requests.get(url)
print(r.status_code)
print(repr(r.text[:200]))   # voir ce qui arrive vraiment

2. Vérifiez le statut et utilisez .json() avec garde

r = requests.get(url)
r.raise_for_status()          # lève une erreur claire si 4xx/5xx
if r.text.strip():
    data = r.json()
else:
    data = {}

3. Encadrez le parsing

import json
try:
    data = json.loads(contenu)
except json.JSONDecodeError as e:
    print("JSON invalide :", e, "| reçu :", repr(contenu[:100]))
    data = {}

Comment prevenir cette erreur

- **Toujours vérifier le code de statut HTTP** avant de parser le corps. - **Journaliser le début de la réponse** (`r.text[:200]`) lors d'un échec d'API. - **N'utilisez `json.loads`** que sur du vrai JSON (guillemets doubles, pas de virgule finale). - Référence : [docs.python.org — json](https://docs.python.org/fr/3/library/json.html).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

« char 0 » signifie quoi ?
Que l'erreur est au tout premier caractère : il n'y a rien de valide à analyser. C'est typique d'une réponse vide ou d'une page HTML reçue à la place du JSON.
Mon API renvoie du HTML au lieu du JSON, comment le détecter ?
Vérifiez `r.headers["Content-Type"]` (il devrait contenir `application/json`) et affichez `r.text[:200]`. Une balise `` indique une page d'erreur, souvent liée à un mauvais statut HTTP.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.