前端技術之:JSON.stringfy詳細說明

JSON.stringify() 語法
JSON.stringify(value[, replacer[, space]])


value 被序列化爲字符串的對象

replacer 根據類型不同,其行爲也不一樣。如果是一個函數類型,則相當於是一個filter,可以對序列化的鍵值對進行加工處理;如果是一個數組,則只有符合數組中名稱的key纔會被輸出

space 如果爲0或不填,則不進行格式化處理;如果爲大於0的數值,則表示每級縮進空格數;如果是一個字符串,則表示每級縮進時替代空格進行填充的字符串內容。


通過以下的data作爲示例:

let data = {
    name: 'wang',
    age: 28,
    address: null,
    favorites: undefined,
    company: {
        name: 'world village',
        address: 'Beijing city'
    }
}

不加任何參數,直接輸出:

console.log(JSON.stringify(data))

結果爲:

{"name":"wang","age":28,"address":null,"company":{"name":"world village","address":"Beijing city"}}

第二個參數爲數組:

console.log(JSON.stringify(data, ['name', 'age']))

結果爲:

{"name":"wang","age":28}

第二個參數是一個函數:

console.log(
    JSON.stringify(data, (k, v) => {
        if ('age' == k) {
            return undefined
        }
        return v
    })
)

結果爲:

{"name":"wang","address":null,"company":{"name":"world village","address":"Beijing city"}}

如果第三個參數爲0或者null:

console.log(JSON.stringify(data, null, 0))

則結果爲:

{"name":"wang","age":28,"address":null,"company":{"name":"world village","address":"Beijing city"}}

如果第三個參數爲大於0的數值:

console.log(JSON.stringify(data, null, 2))

則結果爲:

{
  "name": "wang",
  "age": 28,
  "address": null,
  "company": {
    "name": "world village",
    "address": "Beijing city"
  }
}

如果第三個參數爲字符串:

console.log(JSON.stringify(data, null, '**'))

則結果爲:

{
**"name": "wang",
**"age": 28,
**"address": null,
**"company": {
****"name": "world village",
****"address": "Beijing city"
**}
}

如果過濾值爲null或者undefined的鍵值對?

let data = {
    name: 'wang',
    age: 28,
    address: null,
    favorites: undefined,
    men: true,
    women: false,
    company: {
        name: 'world village',
        address: 'Beijing city'
    }
}
console.log(
    JSON.stringify(data, (k, v) => {
        if (null != v && undefined != v) return v
    })
)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章