ホーム › エラー解決 › JavaScript › Unexpected end of JSON input
JavaScript ERROR

JavaScript Unexpected end of JSON input の原因と解決法

JSON.parseに空文字列や途中で切れたJSONを渡すと発生するエラーです。APIの空レスポンスやlocalStorageの未設定値が典型的な原因です。

🔍 JSON検証ツール(貼るだけでエラー原因を表示)

JSON文字列を貼ると、JSON.parseで検証してエラー内容とヒントを表示します。データは送信されません。

このエラーメッセージ

Uncaught SyntaxError: Unexpected end of JSON input

原因

❌ エラーになるコード

NG
const text = ""; // 空のレスポンスなど
const data = JSON.parse(text);
console.log(data.name);

✅ 修正したコード

OK
const text = '{"name":"太郎","age":25}';
let data = null;
try {
  data = JSON.parse(text);
} catch (e) {
  console.log("JSONの解析に失敗: " + e.message);
}
if (data) {
  console.log(data.name);
}
▶ 修正済みコードを実行エディタで開く
progoのJavaScript実行環境(インストール不要・登録不要)でその場で動作を確認できます。

解決のポイント

外部から来る文字列をJSON.parseするときはtry-catchで包むのが基本です。parseの前にconsole.log(text)で実際の中身を確認すると、空文字・null・HTMLエラーページなど「JSONでないもの」が入っていることに気づけます。localStorageはgetItemがnullを返すため、JSON.parse(value ?? "{}")のような初期値の工夫も有効です。

🧰 他のチェッカー
Pythonインデント診断JS構文エラーチェッカーundefined原因箇所チェッカー

よくある質問

Unexpected token < in JSON との違いは?
<で始まる場合はHTML(エラーページなど)が返ってきています。end of inputは文字列が空か途中で切れている場合です。
fetchのレスポンスで出るのはなぜ?
res.json()は本文が空だと同じエラーになります。res.status(204など)やres.textで本文を確認してから処理してください。