js判斷數據類型講解「js處理json數據」

前言

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

前端 JavaScript 中 JSON.stringify() 的基本用法

因為很多介面它對參數有要求,比如只能是字元串之類的。

這時候,就需要我們將對象轉換為字元串進行輸出,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);

輸出如下:

前端 JavaScript 中 JSON.stringify() 的基本用法

這裡使用了 4 個空格作為層級縮進。

注意:使用 「t」 得到的結果和使用 4 個空格得到的結果看起來很像,但實際不是一回事。

總結

JSON.stringify() 方法可以通過參數控制輸出的數據和格式,靈活應用它會大大提高我們的工作效率。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274956.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:18
下一篇 2024-12-17 14:18

相關推薦

發表回復

登錄後才能評論