h5解析json
隨著互聯網的發展,json數據格式已經成為前端開發中不可或缺的一部分,而h5中提供了很多實用的解析json的api,接下來我們來了解一下它們的使用方法。
JSON.parse
JSON.parse是一個將JSON字符串轉換為JavaScript對象的api,它接受一個JSON字符串作為參數,返回一個JavaScript對象。下面是一個簡單的例子:
var jsonData = '{"name":"小明","age":18,"gender":"男"}'; var obj = JSON.parse(jsonData); console.log(obj.name); //輸出:小明
JSON.stringify
JSON.stringify是一個將JavaScript對象轉換為JSON字符串的api,它接受一個JavaScript對象作為參數,返回一個JSON字符串。下面是一個簡單的例子:
var obj = {name:"小明",age:18,gender:"男"}; var jsonData = JSON.stringify(obj); console.log(jsonData); //輸出:{"name":"小明","age":18,"gender":"男"}
JSON.parse的安全問題
在使用JSON.parse的時候,我們需要注意一些安全問題。因為JSON.parse會將字符串中任何有效的JavaScript表達式都執行一次,這就意味著如果我們接受到了來自不可信來源的JSON字符串,將不可避免地面臨著被注入惡意代碼的風險。一個基本的防御措施就是在調用JSON.parse之前,先將JSON字符串進行過濾,刪除所有不是JSON數據的部分,例如注釋和JavaScript語句。
JSON.parse的日期處理
在JSON中,日期被以字符串的形式表示。因為JSON.parse不能自動將日期字符串轉換為JavaScript中的Date對象,所以我們需要手動轉換。下面是一個實現的例子:
var jsonData = '{"date":"2020-04-04T10:20:30.000Z"}'; var obj = JSON.parse(jsonData,function(key, value){ if(typeof value === 'string' && /Z$/.test(value)){ return new Date(value); } return value; }); console.log(obj.date.getFullYear()); //輸出:2020 console.log(obj.date.getMonth()); //輸出:3
總結
h5提供的JSON.parse和JSON.stringify實現了JSON字符串與JavaScript對象之間的相互轉換,而在使用過程中需要注意一些安全問題和日期處理問題。
下一篇vue js sdk