JSON.stringify的幾種用法


JSON.stringify() 方法用於將 JavaScript 值轉換為 JSON 字符串。

語法: JSON.stringify(value[, replacer[, space]])
參數: value: 必需, 要轉換的 JavaScript 值(通常為對象或數組)。 replacer: 可選。用於轉換結果的函數或數組。 如果 replacer 為函數,則 JSON.stringify 將調用該函數,並傳入每個成員的鍵和值。使用返回值而不是原始值。如果此函數返回 undefined,則排除成員。根對象的鍵是一個空字符串:
""。 如果 replacer 是一個數組,則僅轉換該數組中具有鍵值的成員。成員的轉換順序與鍵在數組中的順序一樣。 space: 可選,文本添加縮進、空格和換行符,如果 space 是一個數字,則返回值文本在每個級別縮進指定數目的空格,如果 space 大於 10,則文本縮進 10 個空格。space 也可以使用非數字,如:\t。

JSON.stringify()與JSON.parse()的區別

JSON.stringify()的作用是將 JavaScript 對象轉換為 JSON 字符串,而JSON.parse()正好相反,可以將JSON字符串轉為一個對象。

JSON.stringify()的妙用

 1.用來調試對象

控制台直接輸出對象可能得不到我們想要的結果

const user = {
    "name" : "張三",
    "age" : 18
}
console.log(user);   [object Object]

因為從對象到字符串的默認轉換是“[objectObject]”

因此,我們使用 JSON.stringify()先將對象轉換為字符串,然后把結果輸入 console 控制台

const user = {
"name" : "張三",
"age" : 18
}
console.log(JSON.stringify(user));
// "{ "name" : "張三", "age" :18 }"

 2.存儲 localStorage 對象

一些時候,你想存儲用戶創建的一個對象,並且,即使在瀏覽器被關閉后仍能恢復該對象。下面的例子是 JSON.stringify  適用於這種情形的一個樣板:

// 創建一個示例數據
var session = {
    'screens' : [],
    'state' : true
};
session.screens.push({"name":"screenA", "width":450, "height":250});
session.screens.push({"name":"screenB", "width":650, "height":350});
session.screens.push({"name":"screenC", "width":750, "height":120});
session.screens.push({"name":"screenD", "width":250, "height":60});
session.screens.push({"name":"screenE", "width":390, "height":120});
session.screens.push({"name":"screenF", "width":1240, "height":650});

// 使用 JSON.stringify 轉換為 JSON 字符串
// 然后使用 localStorage 保存在 session 名稱里
localStorage.setItem('session', JSON.stringify(session));

// 然后是如何轉換通過 JSON.stringify 生成的字符串,該字符串以 JSON 格式保存在 localStorage 里
var restoredSession = JSON.parse(localStorage.getItem('session'));

// 現在 restoredSession 包含了保存在 localStorage 里的對象
console.log(restoredSession);

 3.數組去重

function unique(arr) {
  let unique = {};
  arr.forEach(function(item) {
                //調整屬性順序
    var newData = {};
    Object.keys(item).sort().map(key = >{
      newData[key] = item[key]
    })
    unique[JSON.stringify(newData)] = item; //鍵名不會重復
  })
  arr = Object.keys(unique).map(function(u) {
    //Object.keys()返回對象的所有鍵值組成的數組,map方法是一個遍歷方法,返回遍歷結果組成的數組.將unique對象的鍵名還原成對象數組
    return JSON.parse(u);
  })
  return arr;
}

 4.實現深拷貝

//深拷貝
function deepClone(data) {
    let _data = JSON.stringify(data),
        dataClone = JSON.parse(_data);
    return dataClone;
};

 5.判斷數組是否包含某對象,或者判斷對象是否相等

//判斷數組是否包含某對象
let data = [
    {name:'echo'},
    {name:'前端開發博客'},
    {name:'張三'},
],
val = {name:'張三'};
JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//true

//判斷兩數組/對象是否相等
let a = [1,2,3],
    b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true

暫時就是這些了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM