💡 この記事でわかること
- JSONとは何か
- JSONの記法ルール(オブジェクトとの違い)
- JSON.stringifyでオブジェクトを文字列に変換する方法
- JSON.parseで文字列をオブジェクトに戻す方法
- localStorageなど実践での使いどころ
1. JSONとは?
JSON(JavaScript Object Notation)とは、
👉 データを「文字列」としてやり取りするための、世界共通の書き方のルールのことです。
💡 名前にJavaScriptと入っていますが、JSON自体はJavaScript専用のものではなく、Python・PHP・Javaなど、ほとんどのプログラミング言語で読み書きできる共通フォーマットです。そのため、サーバーとブラウザの間でデータをやり取りするAPI通信などで広く使われています。
{
"name": "田中",
"age": 25,
"hobbies": ["読書", "旅行"]
}
👉 見た目はJavaScriptのオブジェクトとそっくりですが、JSONは「文字列」であって、そのままではJavaScriptのコードとして動かせない点が大きな違いです。
👉 JavaScriptのオブジェクトについての記事はこちら
2. JSONの記法ルール
JSONにはJavaScriptのオブジェクトと違って、守らないといけない細かいルールがあります。
- キー(プロパティ名)は必ずダブルクォート「"」で囲む(シングルクォート不可)
- 文字列の値もダブルクォートで囲む
- 最後の要素の後ろに余分なカンマ(,)は付けられない
- 関数・undefined・コメントは書けない
💡 「JSONっぽい文字列なのにエラーになる」というときは、たいていシングルクォートを使っているか、末尾に余計なカンマが付いていることが原因です。
3. JSON.stringify:オブジェクト→JSON文字列
JavaScriptのオブジェクトをJSON文字列に変換するには、JSON.stringify()を使います。
const user = {
name: "田中",
age: 25,
hobbies: ["読書", "旅行"]
};
const jsonString = JSON.stringify(user);
console.log(jsonString);
// '{"name":"田中","age":25,"hobbies":["読書","旅行"]}'
console.log(typeof jsonString); // "string"
👉 変換後のjsonStringは見た目が似ていても中身は「1本の文字列」であって、オブジェクトではありません。user.nameのようにプロパティへ直接アクセスすることはできなくなります。
4. JSON.parse:JSON文字列→オブジェクト
逆に、JSON文字列をJavaScriptのオブジェクトに戻すにはJSON.parse()を使います。
const jsonString = '{"name":"田中","age":25}';
const user = JSON.parse(jsonString);
console.log(user.name); // "田中"
console.log(user.age); // 25
console.log(typeof user); // "object"
👉 parseに渡す文字列がJSONのルールに沿っていないと、実行時にエラーになります。外部から受け取ったデータをparseするときは、try・catchで囲んでおくと安全です。
try {
const user = JSON.parse("これはJSONではない");
} catch (error) {
console.log("JSONの形式が正しくありません:", error.message);
}
👉 JavaScriptのエラー処理(try・catch・finally)についての記事はこちら
5. 実践例:localStorageにデータを保存する
ブラウザのlocalStorageは、文字列しか保存できません。そのため、オブジェクトを保存したいときはJSON.stringifyとJSON.parseの組み合わせが定番です。
const user = { name: "田中", age: 25 };
// 保存するとき:オブジェクト→文字列に変換してから保存
localStorage.setItem("user", JSON.stringify(user));
// 読み込むとき:文字列→オブジェクトに戻す
const savedUser = JSON.parse(localStorage.getItem("user"));
console.log(savedUser.name); // "田中"
💡 API通信でサーバーからデータを受け取るときも、レスポンスの多くはJSON文字列で届き、JSON.parseで扱いやすいオブジェクトに変換してから使います。
6. 初心者がつまずきやすいポイント
- JSONとオブジェクトを混同する:JSONはあくまで「文字列」、オブジェクトは「JavaScript上のデータ」という点を区別しましょう
- シングルクォートを使ってしまう:JSONのキーと文字列値は必ずダブルクォートが必要です
- 関数を含むオブジェクトをstringifyする:関数プロパティはJSON.stringifyで無視され、結果に含まれません
まとめ
- JSONは、データをやり取りするための言語共通の文字列フォーマット
- キーと文字列値は必ずダブルクォートで囲む
- JSON.stringifyでオブジェクト→JSON文字列に変換する
- JSON.parseでJSON文字列→オブジェクトに戻す
- localStorageやAPI通信など、データの保存・受け渡しの場面で頻繁に使われる
JSONはAPI通信やデータ保存の場面で必ずと言っていいほど登場します。stringifyとparseの2つの使い分けさえ覚えておけば、実際のコードで困ることはほとんどなくなるはずです。