Hiba leírása:
Ez a hiba akkor jelentkezik, amikor a JavaScript JSON.parse() vagy response.json() metódust futtat egy üres vagy hibás JSON válaszon. A parser nem tudja értelmezni az adatot, mert hiányzik a várható formátum egy része.
Uncaught (in promise) SyntaxError: Unexpected end of JSON input
Ez különösen gyakori fetch() hívások után, ha az API nem ad vissza adatot vagy az válasz üres.
💥 Tipikus hibás kód
fetch('/api/user')
.then(res => res.json()) // ❌ ha a válasz üres, hiba lesz
.then(data => console.log(data));
—
✅ Megoldás
1. Ellenőrizd, hogy a válasz nem üres
fetch('/api/user')
.then(async res => {
const text = await res.text();
return text ? JSON.parse(text) : {};
})
.then(data => console.log(data))
.catch(err => console.error('Hiba:', err));
2. Async/await + validáció
async function getUser() {
try {
const res = await fetch('/api/user');
const text = await res.text();
if (!text) throw new Error('Üres válasz');
const json = JSON.parse(text);
console.log(json);
} catch (err) {
console.error('Hibás vagy hiányzó JSON válasz:', err);
}
}
—
🧠 Miért történik ez?
A response.json() feltételezi, hogy a válasz érvényes JSON. Ha a szerver nem ad vissza választ (pl. HTTP 204 No Content), vagy a JSON szerkezet hiányos, akkor a parser „várna még valamit”, és hibát dob.
Gyakori okok:
- Szerverhiba miatt a válasz üres
- API HTTP 204 No Content válasszal tér vissza
- Backend hibásan zárja a JSON-t
🧪 Tipp fejlesztőknek
- Mindig ellenőrizd a válasz tartalmát
response.text()segítségével - Ne csak
res.ok-t nézd, hanem magát a tartalmat is - Backenden adj vissza
{}vagynullüres objektumot
🧯 Összefoglalás
Az Unexpected end of JSON input hiba arra utal, hogy a fetch() hívás által kapott válasz nem volt érvényes JSON. Leggyakrabban üres vagy hiányos válasz okozza. Ez megelőzhető a válasz explicit ellenőrzésével és validálásával parse előtt.
