Unexpected end of JSON input – JSON feldolgozási hiba

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 {} vagy null ü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.

🔗 Kapcsolódó hibák: