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"
   }
]
廣告