ライブラリを使ってJavaScriptオブジェクトをJSON文字列に変換する
JavaScriptオブジェクトをJSON文字列に変換する方法
JSON.stringify()を使用する
これは最も簡単で一般的な方法です。JSON.stringify()
メソッドは、JavaScriptオブジェクトを受け取り、JSON形式の文字列を返します。
const obj = {
name: "John Doe",
age: 30,
address: {
street: "123 Main Street",
city: "New York",
state: "NY",
zip: "10001",
},
};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // 出力: {"name":"John Doe","age":30,"address":{"street":"123 Main Street","city":"New York","state":"NY","zip":"10001"}}
JSON.stringify() メソッドには、いくつかのオプションがあります。
- replacer オプション: オブジェクトのプロパティをどのように変換するかを指定できます。
- space オプション: 出力されるJSON文字列のフォーマットを指定できます。
詳細については、MDN Web Docs の JSON.stringify(): https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify を参照してください。
手動で変換する
単純なオブジェクトの場合、手動でJSON文字列に変換することもできます。
const obj = {
name: "John Doe",
age: 30,
};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
ただし、オブジェクトが複雑になると、手動で変換するのは困難になります。
ライブラリを使用する
JSON変換を簡単にするライブラリもいくつかあります。
これらのライブラリは、JSON.stringify()
メソッドよりも多くの機能を提供します。
JavaScriptオブジェクトをJSON文字列に変換するには、いくつかの方法があります。 どの方法を使用するかは、オブジェクトの複雑さと要件によって異なります。
JSON.stringify()を使用する
const obj = {
name: "John Doe",
age: 30,
address: {
street: "123 Main Street",
city: "New York",
state: "NY",
zip: "10001",
},
};
// オプションなし
const jsonStr1 = JSON.stringify(obj);
console.log(jsonStr1); // 出力: {"name":"John Doe","age":30,"address":{"street":"123 Main Street","city":"New York","state":"NY","zip":"10001"}}
// replacer オプションを使用する
const jsonStr2 = JSON.stringify(obj, (key, value) => {
if (key === "age") {
return value + 1;
} else {
return value;
}
});
console.log(jsonStr2); // 出力: {"name":"John Doe","age":31,"address":{"street":"123 Main Street","city":"New York","state":"NY","zip":"10001"}}
// space オプションを使用する
const jsonStr3 = JSON.stringify(obj, null, 2);
console.log(jsonStr3); // 出力:
手動で変換する
const obj = {
name: "John Doe",
age: 30,
};
const jsonStr = `{"name":"${obj.name}","age":${obj.age}}`;
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
ライブラリを使用する
const JSON = require("json");
const obj = {
name: "John Doe",
age: 30,
};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
json2 ライブラリを使用する例:
const json2 = require("json2");
const obj = {
name: "John Doe",
age: 30,
};
const jsonStr = json2.stringify(obj);
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
JavaScriptオブジェクトをJSON文字列に変換する他の方法
toJSON() メソッドを使用する
一部のオブジェクトは、toJSON()
メソッドを持っている場合があります。 このメソッドは、オブジェクトをJSON形式に変換するためのものです。
const obj = {
name: "John Doe",
age: 30,
toJSON() {
return {
name: this.name,
age: this.age,
};
},
};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
Symbol を使用する
ES6以降では、Symbol を使用してオブジェクトのプロパティを隠すことができます。 これらのプロパティは、JSON.stringify() メソッドによって無視されます。
const obj = {
name: "John Doe",
age: 30,
[Symbol("secret")]: "This is a secret",
};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
JSON.parse() メソッドは、JSON文字列をJavaScriptオブジェクトに変換するために使用されます。 これを逆手に取って、オブジェクトをJSON文字列に変換することもできます。
const obj = {
name: "John Doe",
age: 30,
};
const jsonStr = JSON.parse(JSON.stringify(obj));
console.log(jsonStr); // 出力: {"name":"John Doe","age":30}
注意事項
- 上記の方法の中には、すべてのブラウザでサポートされていないものもあります。
- オブジェクトに循環参照があると、JSON文字列に変換できません。
- オブジェクトに特殊なプロパティや値が含まれている場合、JSON文字列に変換できない場合があります。
javascript json string