JSON.stringify()和parse()的理解小記

一 、 JSON.stringify()和JSON.parse()的區別;
簡單來說:JSON.stringify()將對象obj變成了字符串str,那麼我就可以用JSON.parse()將字符串str還原成對象obj。
在這裏插入圖片描述
在使用JSON.parse()需要注意一點,由於此方法是將JSON字符串轉換成對象,所以你的字符串必須符合JSON格式,即鍵值都必須使用雙引號包裹;
在這裏插入圖片描述

二、JSON.stringify()的使用;

//1.判斷數組是否包含某對象
  var data = [
    {name:'魏無羨'},
    {name:'藍湛'},
    {name:'思追'},
    ],
    name1= {name:'江澄'};
    name2={name:'魏無羨'};
    
JSON.stringify(data).indexOf(JSON.stringify(name1)) !== -1;//false
JSON.stringify(data).indexOf(JSON.stringify(name2)) !== -1;//true

//2.判斷兩數組/對象是否相等
let a = ["魏無羨","藍湛"],
    b = ["魏無羨","藍湛"];
JSON.stringify(a) === JSON.stringify(b);//true

//3.sessionStorage 和localStorage 存儲數據只能存儲字符串,需要轉變 
function setSessionStorage(key,val){
    sessionStorage.setItem(key,JSON.stringify(val)); //存
}; 
function getSessionStorage(key){
    let val = JSON.parse(sessionStorage.getItem(key)); //取
    return val;
};
//測試
setSessionStorage('demo',[1,2,3]);
let  a = getSessionStorage('demo');//[1,2,3]

//3.實現對象深拷貝
//深拷貝
function deepClone(data) {
   return JSON.parse(JSON.stringify(data));
};  

三 、JSON.stringify() 的深入瞭解
語法:參考 mdn

JSON.stringify(value[, replacer [, space]])
參數:
value:
將要序列化成 一個JSON 字符串的值。一般傳入一個對象,但是不僅僅如此,還可以傳入其他值。
replacer | 可選
數據過濾處理,可以三種類型的值:
1.函數,在序列化過程中,被序列化的值的每個屬性都會經過該函數的轉換和處理
2.數組,只有包含在這個數組中的屬性名纔會被序列化到最終的 JSON 字符串中
3.null或者不提供,象所有的屬性都會被序列化
space | 可選
指定縮進用的空白字符串,用於美化輸出,可以指定三種類型的值:
1.數字,代表有多少的空格。上限爲10,該值若小於1,則意味着沒有空格。
2.字符串,字符串的前十個字母,該字符串將被作爲空格。
3.null或者未提供,將沒有空格。
返回值
一個表示給定值的 json 字符串

參考:
https://www.cnblogs.com/EnSnail/p/11183071.html

//測試代碼

<!DOCTYPE html>
<html lang="en"> 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        var oldData = [{
                "coverage": "cover1",
                "premium": "10",
                "coverageRefs": [{
                        "name": "mike1",
                        "insuredId": "1"
                    },
                    {
                        "name": "mike2",
                        "insuredId": "2"
                    },
                    {
                        "name": "mike3",
                        "insuredId": "3"
                    }
                ]
            } 
        ];
        var newData = [{
            "coverage": "cover1",
            "premium": "30",
            "coverageRefs": [{
                    "name": "mike1",
                    "insuredId": "1"
                },
                {
                    "name": "mike2",
                    "insuredId": "2"
                },
                {
                    "name": "mike3",
                    "insuredId": "3"
                }
            ]
        }];

        function isCompare(insuredId) { 
            var oldpremium = 0.00;
            var newpremium = 0.00;
            var flag = true; //默認相等,保費未做調整
            for (var i = 0; i < oldData.length; i++) { 
                if (JSON.stringify(oldData[i].coverageRefs).indexOf(insuredId) !== -1) {
                    oldpremium += parseFloat(oldData[i].premium);
                } else {
                    continue
                }
            }

            for (var i = 0; i < newData.length; i++) { 
                if (JSON.stringify(newData[i].coverageRefs).indexOf(insuredId) !== -1) {
                    newpremium += parseFloat(newData[i].premium);
                } else {
                    continue
                }
            }
            
            if (oldpremium == newpremium) {
                flag = true
            } else {
                flag = false
            }
            return flag;
        }

        var res = isCompare("3");   
        var str = JSON.stringify(oldData, ["coverageRefs", "premium"]); 
        var strs = JSON.stringify(oldData, function (k, v) {
            if (k == 'coverage') {
                return undefined
            } else {
                return v;
            }
        }, 4);
        console.log(res);
        console.log(JSON.parse(str));
        console.log(JSON.parse(strs));
    </script>
</head> 
<body> 
</body> 
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章