關於JSON.stringify()與JSON.parse()


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

  JSON.stringify()的作用是將js值轉換成JSON字符串,而JSON.parse()是將JSON字符串轉換成一個對象。也就是說,如果我們用JSON.stringify()將一個對象變成了字符串,那么使用JSON.parse()將字符串還原成對象。

let obj = {
name:"song",
age:10
};
let changeObj =JSON.stringify(obj);
console.log(changeObj); //"{"name":"song","age":10}"
console.log(typeof changeObj);//string

let orig =JSON.parse(changeObj);
console.log(orig);//{name:"song",age:10}
console.log(typeof orig);//object

    

二、JSON.stringify()和JSON.parse()的幾種用法

(一)在localStorage/sessionStorage里存儲對象/數組/對象數組

     localStorage/sessionStorage默認只能存儲字符串,如果要存儲對象類型的數據,在存入的時候利用JSON.stringify()將對象轉換成字符串,然后在取出來的時候,利用JSON.parse()轉會回對象。

1 //存數據
2 localStorage.setItem("cart",JSON.stringify(n));
3 
4 //取數據
5 JSON.parse(window.localStorage.getItem("cart"));

(二)vue路由傳參(對象)

   有時候如果對象里面只是一兩個屬性,可以直接利用字面量的方式定義對象,但如果需要傳遞的對象中有很多屬性,那么一個一個的寫顯然是很不可取的。所以就可以利用JSON.stringify()和JSON.parse()來轉換。

1 this.$router.push({ 
2     name: "DataDetail", 
3     query: {    
4         tabsVal: JSON.stringify(val),  
5         Name: this.$route.query.name 
6         }
7 });​

(三)實現對象/數組的深拷貝

   其實這樣將數據直接轉換成字符串然后進行拷貝,完成后在轉換回去,倒是一種很不錯的方案。

 

var obj2 = {
    name:"L",
    age:12,
    value:"IU"
}
obj1=JSON.parse(JSON.stringify(obj2));

(四)判斷數組/對象是否相等、或則判斷是否包含某內容

  用來判斷數組/對象是否相等用這種方法確實很容易,將要比較的兩者都先轉成字符串,然后直接全等於判斷即可。


免責聲明!

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



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