JavaScriptでオブジェクトをJSON文字列に変換する際によく使用される`JSON.stringify()`メソッドについて、詳しく解説します。
JSON.stringify()の基本的な使い方
const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // {"name":"John","age":30}構文
JSON.stringify(value[, replacer[, space]])- value: 変換対象のJavaScriptオブジェクト
- replacer: 変換処理をカスタマイズする関数または配列(省略可能)
- space: 出力される文字列の整形に使用するスペース(省略可能)
よくあるユースケース
1. シンプルなオブジェクトの変換
const user = {
name: "Alice",
email: "alice@example.com"
};
console.log(JSON.stringify(user));2. ネストされたオブジェクトの変換
const data = {
user: {
name: "Bob",
age: 25
},
settings: {
theme: "dark"
}
};
console.log(JSON.stringify(data));3. 整形して出力
const obj = { a: 1, b: 2 };
console.log(JSON.stringify(obj, null, 2));
/*
{
"a": 1,
"b": 2
}
*/注意点と制限事項
1. 関数は変換されない
const obj = {
func: function() { return 1; }
};
console.log(JSON.stringify(obj)); // {}2. undefined値は省略される
const obj = {
a: undefined,
b: null
};
console.log(JSON.stringify(obj)); // {"b":null}3. 循環参照は例外を発生させる
const obj = {};
obj.self = obj;
// TypeError: Converting circular structure to JSONエラー処理
try {
const jsonString = JSON.stringify(someObject);
} catch (error) {
console.error('JSON変換エラー:', error);
}実践的な使用例
ローカルストレージへの保存
const userData = {
name: "Charlie",
preferences: {
darkMode: true
}
};
localStorage.setItem('userData', JSON.stringify(userData));APIリクエストの送信
const postData = {
title: "新しい投稿",
content: "Hello, World!"
};
fetch('/api/posts', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(postData)
});パフォーマンスの考慮事項
- 大きなオブジェクトを変換する場合は、パフォーマンスに影響する可能性があります
- 必要な場合のみ変換を行い、不要な変換は避けましょう
まとめ
`JSON.stringify()`は、JavaScriptオブジェクトをJSON文字列に変換する強力なメソッドです。APIとの通信やデータの永続化など、様々な場面で活用できます。ただし、関数や undefined の扱い、循環参照には注意が必要です。