tanaka101

JSON文字列

別名: JSON String, JSON文字列化, シリアライズ

JSON文字列とは、プログラム上のデータ構造(オブジェクトや配列、辞書など)をJSON形式の「文字列」に変換したものです。
データを保存したりサーバーへ送信するときに必要になる形式の一つです。

JSON(JavaScript Object Notation)はもともとJavaScriptの構文を元にした形式ですが、現在では言語に依存しない汎用的なデータ交換フォーマットとして、Python・Java・Go・PHP など多くの言語で広く利用されています。

なぜJSON文字列に変換する必要があるのか

プログラム内のオブジェクトや辞書などのデータ構造は、そのままではファイルに保存したり、ネットワークで送信したりできません。
保存や通信では、データを 1本の文字列(テキスト) にする必要があります。

// プログラム内のデータ構造(例:JavaScriptのオブジェクト)
const user = { name: "田中", age: 30 };
 
// このまま保存や送信はできない
// → 文字列に変換する必要がある

この「データ構造を文字列に変換する」処理をシリアライズ(serialize)と呼びます。
逆に「文字列をデータ構造に戻す」処理をデシリアライズ(deserialize)と呼びます。

変換の方法

ここではJavaScriptを例に説明します。JavaScriptでは JSON.stringify()JSON.parse() という2つのメソッドを使います。

オブジェクト → JSON文字列(stringify)

const user = { name: "田中", age: 30 };
 
const jsonString = JSON.stringify(user);
console.log(jsonString);
// '{"name":"田中","age":30}'
 
console.log(typeof jsonString);
// "string"

JSON.stringify() を使うと、オブジェクトがただの文字列になります。
見た目は似ていますが、もう .name.age でアクセスすることはできません。

JSON文字列 → オブジェクト(parse)

const jsonString = '{"name":"田中","age":30}';
 
const user = JSON.parse(jsonString);
console.log(user.name);
// "田中"
 
console.log(typeof user);
// "object"

JSON.parse() を使うと、文字列がオブジェクトに戻り、再びプロパティにアクセスできるようになります。

データ構造とJSON文字列の違い

以下はJavaScriptでの比較です。他の言語でも「プログラム内のデータ構造」と「JSON文字列」の関係は同様です。

項目データ構造(オブジェクト)JSON文字列
objectstring
プロパティアクセスuser.name でアクセスできるできない(ただの文字列)
保存・通信そのままではできないそのまま保存・送信できる
見た目{ name: "田中" }{"name":"田中"}
用途プログラム内でデータを扱う保存・送信のためにデータを運ぶ

実際の利用場面

ローカルストレージへの保存

ローカルストレージは文字列しか保存できないため、オブジェクトを保存するにはJSON文字列に変換する必要があります。

// 保存するとき
const settings = { theme: "dark", fontSize: 16 };
localStorage.setItem("settings", JSON.stringify(settings));
 
// 取り出すとき
const saved = localStorage.getItem("settings");
const parsed = JSON.parse(saved);
console.log(parsed.theme);
// "dark"

APIとの通信

サーバーにデータを送るときも、JSON文字列に変換します。

const data = { email: "tanaka@example.com", password: "secret" };
 
fetch("/api/login", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(data),
});

サーバーからのレスポンスを受け取るときは、response.json() が内部的に JSON.parse() を行ってくれます。

const response = await fetch("/api/user");
const user = await response.json(); // JSON文字列 → オブジェクトに変換
console.log(user.name);

まとめ

  • JSON文字列は、プログラム上のデータ構造をJSON形式の文字列に変換したもの
  • JSONは言語に依存しない汎用的なデータ交換フォーマットで、多くの言語で利用されている
  • ローカルストレージへの保存やAPI通信など、データの保存・送受信で広く使われている