JS

JSON.parse

中級

読み方:ジェイソンパース|英語:JSON.parse

JSON文字列をJavaScriptのオブジェクトに変換するメソッドだよ。

やさしい説明

JSON.parseは、JSON形式の文字列をJavaScriptのオブジェクトに変換する関数です。逆に、JSON.stringifyはオブジェクトをJSON文字列に変換します。

APIから受け取ったデータは「文字列」として届きます。それをJavaScriptで使えるオブジェクトに変換するのがJSON.parseの役割です。

localStorageに保存したデータを読み出すときにも使います(localStorageは文字列しか保存できないため)。

具体例・使い方

// JSON文字列 → オブジェクト
const text = '{"name":"太郎","age":15}';
const user = JSON.parse(text);
user.name; // "太郎"
user.age;  // 15(数値として取り出せる)

// オブジェクト → JSON文字列
const json = JSON.stringify({ score: 100 });
// '{"score":100}'

// JSON.stringify の第3引数でインデント整形
const pretty = JSON.stringify({ name: "太郎", age: 15 }, null, 2);
/* '{
  "name": "太郎",
  "age": 15
}' */

// localStorageとの組み合わせ
localStorage.setItem("user", JSON.stringify(user));
const saved = JSON.parse(localStorage.getItem("user"));
saved.name; // "太郎"

fetch でAPIを呼ぶときは res.json() が内部で自動的に JSON.parse を行ってくれます。直接 JSON.parse を書くのは主に localStorage や WebSocket などで文字列データを受け取るときです。

JSONの書き方ルール

  • キーと文字列の値は必ずダブルクォートで囲む(シングルクォート不可)
  • 末尾のカンマ(trailing comma)は使えない
  • 値に使える型:文字列・数値・真偽値・null・配列・オブジェクト
  • undefined・関数・Symbol は JSON に変換できない(stringifyで除外される)
  • コメント(// ...)は書けない

JSONはJavaScriptのオブジェクトリテラルに似ていますが、別のフォーマットです。バリデーションは JSONLint などのオンラインツールで確認できます。

いつ使う?

  • APIのレスポンスを処理するとき(fetch 以外のライブラリ経由の場合)
  • localStorageにオブジェクトを保存・読み出しするとき
  • WebSocketで受信した文字列データをオブジェクトに変換するとき
  • 設定ファイル(JSON)の内容をオブジェクトとして扱うとき
  • オブジェクトのディープコピー(簡易的に JSON.parse(JSON.stringify(obj))

間違いやすいポイント

❌ 不正なJSON文字列をparseするとエラーになる

シングルクォートや末尾カンマなど、JSONの書式に違反した文字列を渡すと SyntaxError が発生します。必ず try-catch で囲みましょう。

// ❌ シングルクォートはJSONでは使えない
JSON.parse("{'name':'太郎'}"); // SyntaxError!

// ✅ ダブルクォートを使う
JSON.parse('{"name":"太郎"}'); // OK

// ✅ try-catchで安全にパース
try {
  const data = JSON.parse(maybeInvalidString);
  console.log(data);
} catch (e) {
  console.error("JSONパースに失敗:", e.message);
}

❌ localStorage.getItem() は null を返すことがある

キーが存在しない場合 null が返るため、JSON.parse(null)null になります。|| "" などでフォールバックを用意しましょう。

よくある疑問

Q: JSON.stringifyとの違いは?

A: JSON.parseは文字列→オブジェクト、JSON.stringifyはオブジェクト→文字列です。保存時にstringify、読み出し時にparseを使います。

Q: JSONの形式ルールは?

A: キーはダブルクォート必須、末尾カンマNG、シングルクォートNG、コメントNG。{"name": "太郎"} が正しい形式です。

Q: parseでエラーが出たら?

A: try { JSON.parse(str) } catch(e) { } で囲みましょう。エラーの原因はJSON文字列の形式不正が多いです。

関連用語

  • fetch — APIからデータを取得するときにJSONを扱う
  • オブジェクト — JSON.parseの変換結果がJavaScriptオブジェクト
  • try-catch — パース失敗時のエラーハンドリングに使う
  • — JSONで扱える型とJavaScriptの型の対応関係

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A