JavaScript - JSON.stringify() 方法



JavaScript 的 JSON.stringify() 方法用于将 JavaScript 值(例如对象或数组)转换为 JSON 字符串。使用此方法时,可以选择包含一个名为 replacer 的可选参数,该参数可以指定为函数。

如果提供 replacer 函数,则可以修改正在进行字符串化的值。此外,通过从 replacer 函数返回不同的值,可以自定义生成的 JSON 字符串的输出。

JSON.stringify() 方法是 JavaScript 的静态方法,这意味着您可以始终将其用作 JSON.stringify(),无需创建对象实例即可调用它。

语法

以下是 JavaScript JSON.stringify() 方法的语法:

JSON.stringify(value, replacer, space)

参数

此方法接受三个名为“value”、“replacer”和“space”的参数,如下所述:

  • value − 要转换为 JSON 字符串的值。

  • replacer (可选) − 一个修改字符串化过程的函数,或者一个字符串和数字数组,指定要包含在输出中的属性。如果“replacer”是数组,则忽略非字符串和非数字元素(包括符号)。如果“replacer”不是函数或数组(例如 null 或未提供),则对象的全部字符串键属性都将包含在生成的 JSON 字符串中。

  • space (可选) − 用于在输出 JSON 字符串中插入空格(缩进、换行符等)以提高可读性的字符串或数字。

返回值

此方法返回表示给定值的 JSON 字符串,或“undefined”。

示例

示例 1

如果我们只为此方法传递 value 参数,它将把此 JavaScript 值转换为 JSON 字符串。

在下面的示例中,我们使用 JavaScript JSON.stringify() 方法将 JavaScript 值 {a: 10, b: 20, c: 30, d: 40, e: 50} 转换为 JSON 字符串。

<html>
<head>
   <title>JavaScript JSON.stringify() Method</title>
</head>
<body>
   <script>
      const value = {a: 10, b: 20, c: 30, d: 40, e: 50};
      document.write("The given value: ", value.a, value.b, value.c, value.d, value.e);
      document.write("<br>After converting to JSON srtring: ", JSON.stringify(value));
   </script>
</body>
</html>

输出

上述程序转换 JavaScript 值后返回一个 JSON 字符串,如下所示:

The given value: 1020304050
After converting to JSON srtring: {"a":10,"b":20,"c":30,"d":40,"e":50}

示例 2

如果我们向此方法传递value 和 space 参数,它将把值转换为 JSON 字符串,并在每个字符前添加指定数量的空格缩进。

以下是 JavaScript JSON.stringify() 方法的另一个示例。我们使用此方法将 JavaScript 值 {"name": "Rahul", "age": 22, "city": "Lucknow"} 转换为格式化的 JSON 字符串,并使用 3 个空格缩进以提高可读性。

const value = {"name": "Rahul", "age": 22, "city": "Lucknow"};
console.log("The given value: ", value.name, " ", value.age, " ", value.city);
const space = 3;
console.log("Number of spaces: ", space);
      
//using the JSON.stringify() method
const json_string = JSON.stringify(value, null, space);
console.log(json_string);
  

输出

执行上述程序后,它将在控制台中返回一个带有 3 个缩进的 JSON 字符串(更改只能在控制台中看到)。

The given value:  Rahul   22   Lucknow
Number of spaces:  3
{
   "name": "Rahul",
   "age": 22,
   "city": "Lucknow"
}

示例 3

如果我们将 replacer(作为函数)作为参数传递给此方法,它将修改字符串化过程。

在下面的示例中,我们使用 JSON.stringify() 方法将 JavaScript 值转换为 JSON 字符串。我们定义了一个名为 modifyAge() 的 replacer 函数,它会为每条记录将年龄增加 5。我们将此函数作为参数传递给该方法,以便在返回结果之前对其进行修改。

//custom replacer function
function modifyAge(key, value){
   if(key === "age"){
      return value+5;
   } else {
      return value;
   }
}
const value = [{"name": "Rahul", "age": 22, "city": "Lucknow"}, {"name": "Vikash", "age": 20, "city": "Hyderabad"}];
console.log("The JavaScript value (before converting): ", JSON.stringify(value), " ");
let space = 5;
console.log("The number space: ", space);

//using the JSON.stringify() method
const jsonString = JSON.stringify(value, modifyAge, space);
console.log("The JSON string (after converting): ");
console.log(jsonString);

输出

执行上述程序后,它将返回一个 JSON 字符串(修改后的年龄)。

The JavaScript value (before converting):  [{"name":"Rahul","age":22,"city":"Lucknow"},{"name":"Vikash","age":20,"city":"Hyderabad"}]  
The number space:  5
The JSON string (after converting): 
[
   {
      "name": "Rahul",
      "age": 27,
      "city": "Lucknow"
   },
   {
      "name": "Vikash",
      "age": 25,
      "city": "Hyderabad"
   }
]
广告