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 contacterQuestions 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.