前言
在開發工作中,我們可能會碰到這樣的需求:需要將某個對象內容彈窗顯示或者保存在文件中,這時候如果你直接彈窗的話,很可能就是下面這樣的:

因為很多介面它對參數有要求,比如只能是字元串之類的。
這時候,就需要我們將對象轉換為字元串進行輸出,JSON.stringify() 方法就可以幫我們實現將對象轉為字元串的過程。
方法描述
JSON.stringify() 方法將一個 JavaScript 對象或值轉換為 JSON 字元串,如果指定了一個 replacer 函數,則可以選擇性地替換值,或者指定的 replacer 是數組,則可選擇性地僅包含數組指定的屬性。
語法
JSON.stringify(value[, replacer [, space]])參數說明:
- value 將要序列化成 一個 JSON 字元串的值。
- replacer(可選)如果該參數是一個函數,則在序列化過程中,被序列化的值的每個屬性都會經過該函數的轉換和處理;如果該參數是一個數組,則只有包含在這個數組中的屬性名才會被序列化到最終的 JSON 字元串中;如果該參數為 null 或者未提供,則對象所有的屬性都會被序列化。
- space(可選) 指定縮進用的空白字元串,用於美化輸出(pretty-print);如果參數是個數字,它代表有多少的空格;上限為10。如果省略space,則將生成返回值文本,而沒有任何額外空格。如果 space是一個數字,則返回值文本在每個級別縮進指定數目的空格。 如果 space 大於 10,則文本縮進 10 個空格。如果 space是一個非空字元串(例如「t」),則返回值文本在每個級別中縮進字元串中的字元。如果 space 是長度大於 10個字元的字元串,則使用前 10 個字元。
返回值
一個表示給定值的JSON字元串。
常規用法
console.log(JSON.stringify({name: "obj"}))
// '{"name": "obj"}'repalacer 參數
replacer 參數可以是一個函數或者一個數組。作為函數,它有兩個參數,鍵(key)和值(value),它們都會被序列化。
在開始時, replacer 函數會被傳入一個空字元串作為 key 值,代表著要被 stringify 的這個對象。隨後每個對象或數組上的屬性會被依次傳入。
函數應當返回JSON字元串中的value, 如下所示:
- 如果返回一個 Number,轉換成相應的字元串作為屬性值被添加入 JSON 字元串。
- 如果返回一個 String,該字元串作為屬性值被添加入 JSON 字元串。
- 如果返回一個 Boolean, “true” 或者 “false” 作為屬性值被添加入 JSON 字元串。
- 如果返回任何其他對象,該對象遞歸地序列化成 JSON 字元串,對每個屬性調用 replacer 方法。除非該對象是一個函數,這種情況將不會被序列化成 JSON 字元串。
- 如果返回 undefined,該屬性值不會在 JSON 字元串中輸出。
有以下對象:
const data = [
{
name: "person1",
sex: 0,
age: 18,
isStudent: true
},
{
name: "person2",
sex: 1,
age: 25,
isStudent: false
},
{
name: "person3",
sex: 0,
age: 15,
isStudent: true
}
]接下來我們針對這個對象做各種需求實現。
只輸出姓名和性別
const res = JSON.stringify(data, ["name", "sex"])
console.log(res);
// `[{"name":"person1","sex":0},{"name":"person2","sex":1},{"name":"person3","sex":0}]`JSON.stringify() 提供了分離出自己需要的那部分數據。
將性別轉為中文字元
const res = JSON.stringify(data, (key, value) => {
if (key == 'sex') {
return ["女", '男'][value];
}
return value;
})
console.log(res);
// `[{"name":"person1","sex":"女","age":18,"isStudent":true},{"name":"person2","sex":"男","age":25,"isStudent":false},{"name":"person3","sex":"女","age":15,"isStudent":true}]`JSON.stringify() 提供了回調函數做一個映射關係。
space 參數
const res = JSON.stringify(data, ["name", "sex"],4)
console.log(res);輸出如下:

這裡使用了 4 個空格作為層級縮進。
注意:使用 「t」 得到的結果和使用 4 個空格得到的結果看起來很像,但實際不是一回事。
總結
JSON.stringify() 方法可以通過參數控制輸出的數據和格式,靈活應用它會大大提高我們的工作效率。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274956.html
微信掃一掃
支付寶掃一掃