JSON作為一種輕量級的數據交換格式,常常被用于前后端數據傳輸。但是在實際的開發中,我們經常會遇到需要過濾一些特殊符號的需求,這也是我們在使用JSON時需要注意的一個問題。
var myJson = { "name": "Lucy", "age": 18, "hobby": ["reading", "swimming", "music"] }; var myFilterJson = JSON.stringify(myJson, function(key, value) { if (typeof value === "string") { return value.replace(/[&<>"'/]/g, function(m) { switch (m) { case "&": return "&"; case "<": return "<"; case ">": return ">"; case "\"": return """; case "'": return "'"; case "/": return "/"; } }); } else { return value; } }, 2); console.log(myFilterJson);
在以上代碼中,我們定義了一個myJson對象,并通過JSON.stringify方法將其轉換為JSON字符串類型。但是我們希望過濾特殊符號,避免其中出現HTML注入或JS注入等問題,所以引入了第二個參數進行過濾。
該參數是一個函數,用于迭代轉換深度優先遍歷的每個值并返回。其中,key參數表示當前迭代的屬性名,value表示當前迭代的屬性值,我們可以通過判斷value是否為字符串類型,進而對其進行過濾。
我們使用正則表達式/[<>"'\/]/g來匹配需要過濾的特殊符號,同時使用switch語句將其轉換為HTML實體符號,如&、<、>等。
最后,我們將過濾后的JSON對象以兩個空格的縮進格式輸出到控制臺中。