JSONパースエラー?

JSON.parse()のエラーを即座に特定して修正。すべての構文エラーの行・列・原因を正確に表示し、ワンクリックで自動修復。

1
2
3

JSONパースエラーのデバッグ

コード内のパース失敗を見つけて修正するステップバイステップの方法。

1

必ず生の入力をログに出す

JSON.parse()を呼ぶ前に生の文字列をログに出力しましょう。多くのパースエラーはJSON文字列ではなく、HTMLエラーページ、空のボディ、または既にパース済みのオブジェクトを受け取ることが原因です。

2

Content-Typeヘッダーを確認

APIレスポンスのContent-Typeがtext/htmlの場合、JSONではなくエラーページを受信している可能性が高いです。APIエンドポイントのURLと認証情報を確認してください。

3

二重パースに注意

HTTPクライアント(axios、fetch)がJSONレスポンスを自動パースする場合、さらにJSON.parse()を呼ぶと失敗します。パースする前にデータが既にオブジェクトでないか確認しましょう。

4

コードでエッジケースを処理

JSON.parse()は必ずtry-catchで囲みましょう。パース前に空文字列やnull値を確認。パース失敗時は適切なデフォルト値やエラーオブジェクトを返してください。

パースエラーの診断

不可解なエラーメッセージから正常なJSONドキュメントへ数秒で。

エラー位置の正確な特定

パース失敗の原因となった行・列・文字を正確に表示。エディタ上でエラー箇所がハイライトされるので探す必要がありません。

わかりやすいエラーメッセージ

「Unexpected token < at position 0」のような不可解なメッセージの代わりに、「3行目でダブルクォートが必要な箇所にシングルクォートがあります」のような分かりやすい説明を表示。

一般的なパースエラーの自動修正

末尾カンマ、シングルクォート、コメント、引用符なしキー — JSON.parse()失敗の4大原因 — をワンクリックで修復。

JSONパースエラーを理解する

JSON.parse()エラーはJavaScriptアプリケーションで最も一般的なランタイム例外の一つです。入力文字列がJSON仕様に厳密に準拠していない場合に発生します。エラーメッセージのパターンを理解すれば、推測なしで根本原因を特定できます。

エラーメッセージ早見表

「Unexpected token <」— JSONではなくHTMLを受信(URLを確認)

「Unexpected end of input」— レスポンスが途中で切れている(ネットワークを確認)

「Unexpected token o at position 1」— 既にパース済みのオブジェクトをパースしようとしている

JSONパースエラー — よくある質問

JSON.parse()の「Unexpected token」とは?

特定の位置でパーサーが想定外の文字を検出したことを意味します。例えば「Unexpected token <」は通常JSONではなくHTMLエラーページを受信したことを示します。「Unexpected token ,」は末尾カンマまたは二重カンマです。

「Unexpected end of JSON input」とは?

すべての閉じ括弧が見つかる前にJSON文字列が途切れたことを意味します。一般的な原因:ネットワークタイムアウトによるAPIレスポンスの切断、誤ってスライスされた文字列、完全にダウンロードされなかったファイル。

「Unexpected token o at position 1」はなぜ起きる?

ほぼ確実に、既にパース済みのオブジェクトに対してJSON.parse()を呼んでいます。オブジェクトの文字列表現は「[object Object]」で、位置1の「o」がエラーを引き起こします。二重パースしていないか確認してください。

コードの「SyntaxError: JSON.parse」を直すには?

まず、パースしようとしている生の文字列をログに出力してください。このバリデータに貼り付ければ正確なエラーがわかります。一般的なコード修正:APIが実際にJSON(HTMLではなく)を返しているか、Content-Typeヘッダーを確認、レスポンスボディが空でないか確認。

APIレスポンスでJSON.parseが失敗するのはなぜ?

3つ確認:(1) レスポンスのContent-Typeがtext/htmlではなくapplication/jsonであること、(2) レスポンスボディが空でないこと(ステータス204やエラーページ)、(3) サーバーがJSONではなくJSONP(コールバックラッパー)を返していないこと。

コメント付きのJSONをパースできる?

標準のJSON.parse()はコメントを拒否します。データに//や/* */コメントが含まれる場合、まず除去が必要です。このツールは自動修正時にコメントを自動除去し、JSON.parse()で受け入れ可能な有効なJSONを生成します。

JSONとJavaScriptオブジェクトの違いは?

JSONはダブルクォートのキーと文字列、末尾カンマなし、コメントなし、undefinedなしが必要です。JavaScriptオブジェクトはこれらすべてを許容します。JSONはJavaScriptオブジェクトリテラル構文の厳密なサブセット — すべてのJSONは有効なJSですが、すべてのJSオブジェクトが有効なJSONとは限りません。

関連ツール

ほかの JSON ツールも活用してワークフローを効率化しましょう。