Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
- トップページ
- JavaScript辞典
- JSON.parse() / stringify()
JSON.parse() / stringify()対応: ES5(ECMAScript 2009)
JSON形式の文字列とJavaScriptのオブジェクトを相互に変換するためのメソッドです。サーバーとのデータ通信やデータの保存に使用します。
構文
// JSON文字列をJavaScriptのオブジェクトに変換します。 var obj = JSON.parse(JSON文字列); // JavaScriptのオブジェクトをJSON文字列に変換します。 var str = JSON.stringify(オブジェクト); // インデント付きで見やすく変換します。 var str = JSON.stringify(オブジェクト, null, インデント数);
メソッド一覧
| メソッド | 概要 |
|---|---|
| JSON.parse(文字列) | JSON形式の文字列をJavaScriptのオブジェクトに変換します。無効なJSON文字列を渡すとエラーが発生します。 |
| JSON.stringify(値) | JavaScriptの値をJSON形式の文字列に変換します。第3引数でインデントを指定すると、整形された文字列が得られます。 |
サンプルコード
// JSON.parse() でJSON文字列をオブジェクトに変換します。
var jsonStr = '{"name": "太郎", "age": 25, "hobbies": ["読書", "映画"]}';
var user = JSON.parse(jsonStr);
console.log(user.name); // 『太郎』と出力されます。
console.log(user.age); // 『25』と出力されます。
console.log(user.hobbies[0]); // 『読書』と出力されます。
// JSON.stringify() でオブジェクトをJSON文字列に変換します。
var product = {
name: "ノートPC",
price: 89800,
inStock: true
};
var productJson = JSON.stringify(product);
console.log(productJson); // 1行のJSON文字列が出力されます。
// インデント付きで見やすく変換します。
var prettyJson = JSON.stringify(product, null, 2);
console.log(prettyJson); // 2スペースのインデント付きで出力されます。
// 配列もJSON文字列に変換できます。
var colors = ["赤", "青", "緑"];
console.log(JSON.stringify(colors)); // 『["赤","青","緑"]』と出力されます。
// localStorageへの保存と読み込みの実用例
var settings = { theme: "dark", fontSize: 16 };
localStorage.setItem("settings", JSON.stringify(settings)); // 保存
var loaded = JSON.parse(localStorage.getItem("settings")); // 読み込み
console.log(loaded.theme); // 『dark』と出力されます。
実行結果
"太郎" // user.name
25 // user.age
"読書" // user.hobbies[0]
'{"name":"ノートPC","price":89800,"inStock":true}' // JSON.stringify(product)
// JSON.stringify(product, null, 2) の出力
{
"name": "ノートPC",
"price": 89800,
"inStock": true
}
'["赤","青","緑"]' // JSON.stringify(colors)
"dark" // localStorageから復元した値
JSON.parse()のエラー処理
無効なJSON文字列を『JSON.parse()』に渡すとエラーが発生します。サーバーからの応答データなど、内容が保証されない文字列を変換する場合は必ず『try...catch』でエラーを処理してください。
// 無効なJSON文字列はエラーになります。
try {
var data = JSON.parse("これはJSONではない");
} catch (e) {
console.log("JSONの変換に失敗しました: " + e.message);
}
// シングルクォートはJSONでは無効です。
try {
var data = JSON.parse("{'name': '太郎'}"); // エラーになります。
} catch (e) {
console.log("JSONではプロパティ名と文字列にダブルクォートを使います。");
}
概要
JSONはJavaScript Object Notationの略で、データ交換のための軽量なテキスト形式です。JavaScriptのオブジェクトリテラルに似た書式ですが、プロパティ名を必ずダブルクォートで囲む点や、末尾カンマが許可されない点など、いくつかの違いがあります。
『JSON.parse()』と『JSON.stringify()』はWebアプリケーション開発で最もよく使われるメソッドの1つです。サーバーのAPIからデータを取得した際にJSON文字列をオブジェクトに変換したり、『localStorage』にデータを保存する際にオブジェクトをJSON文字列に変換したりする場面で活躍します。
『JSON.stringify()』では関数、『undefined』、『Symbol』は変換時に無視されます。また『Date』オブジェクトは文字列に変換され、『NaN』や『Infinity』は『null』に変換されるため、これらの値を含むデータの変換には注意が必要です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。