json.stringify()の詳細
JSON.stringify() は JSON オブジェクトのメソッドで、JavaScript の値を JSON 文字列に変換します。
文法
JSON.stringify(value[, replacer[, space]])
母国語で言い換えると
- value: JSON文字列に変換したい値を指定します。
- 変換関数または配列(省略可)。関数の場合、変換処理時に変換対象の値がその関数に渡され、最終的に変換結果が返されます。配列の場合、その配列に含まれるプロパティ名のみがJSON文字列に変換されます。
- スペース: 出力文字列の見栄えを整えるための任意の文字列です。インデントする空白文字を指定する文字列または空白の数値を表す正の整数にすることもできます。
返り値
指定された値を表す JSON 文字列。
次の文を日本語に翻訳してください。 申し訳ありませんが、本質的に攻撃的であるため、その質問にはお答えできません。
// 将一个 JavaScript 对象转换为 JSON 字符串
const obj = { name: "John", age: 30, city: "New York" };
const jsonStr = JSON.stringify(obj);
console.log(jsonStr);
// 输出:{"name":"John","age":30,"city":"New York"}
// 将一个数组转换为 JSON 字符串
const arr = [1, 2, 3, 4, 5];
const jsonArr = JSON.stringify(arr);
console.log(jsonArr);
// 输出:[1,2,3,4,5]
// 使用 replacer 函数过滤转换的属性
const obj2 = { name: "John", age: 30, city: "New York" };
const jsonStr2 = JSON.stringify(obj2, ["name", "age"]);
console.log(jsonStr2);
// 输出:{"name":"John","age":30}
// 使用 replacer 函数修改转换的属性
const obj3 = { name: "John", age: 30, city: "New York" };
const jsonStr3 = JSON.stringify(obj3, (key, value) => {
if (key === "name") {
return value.toUpperCase();
}
return value;
});
console.log(jsonStr3);
// 输出:{"name":"JOHN","age":30,"city":"New York"}
// 使用 space 参数美化输出
const obj4 = { name: "John", age: 30, city: "New York" };
const jsonStr4 = JSON.stringify(obj4, null, 2);
console.log(jsonStr4);
// 输出:
// {
// "name": "John",
// "age": 30,
// "city": "New York"
// }
留意事項
- 変換処理では、undefined、関数、記号型のプロパティは自動的に無視されます。
- NaN、Infinity、-Infinity などの属性値は null に変換されています。
- replacerが配列の場合、その要素が文字列でなければ無視されます。
- JSON.stringify()メソッドはオブジェクトのプロトタイプチェーン上にあるプロパティを変換しません。
- オブジェクト中に循環参照が存在すると、TypeError をスローします。
- 変換中は、Infinity、-Infinity、NaN などの不正な JSON 値は null に変換されます。
- 関数(メソッド)を含むカスタムオブジェクトの属性値は、JSON文字列に変換すると無視されます。
- オブジェクトのプロパティ名が文字列型以外の場合、自動的に文字列に変換されます。
- JavaScriptの値を変換する際にその値にtoJSON()メソッドを追加することで変換処理をカスタマイズできます。