一、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));
(四)判斷數組/對象是否相等、或則判斷是否包含某內容
用來判斷數組/對象是否相等用這種方法確實很容易,將要比較的兩者都先轉成字符串,然后直接全等於判斷即可。