JSON是一種輕量級的數(shù)據(jù)交換語言,它在前后端交互中得到廣泛的應(yīng)用。在JSON中,時間的表示方式為ISO 8601格式。但是,這種格式在JavaScript中不能直接進行反序列化。因此我們需要進行特殊的處理。
const json = '{"time": "2021-10-01T15:16:17.123Z"}'; const obj = JSON.parse(json, (key, value) => { if (typeof value === 'string') { const regex = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)\.(\d{3})Z$/; const match = value.match(regex); return match ? new Date(value) : value; } else { return value; } }); console.log(obj.time); // Fri Oct 01 2021 23:16:17 GMT+0800 (China Standard Time)
在解析JSON的過程中,我們可以使用第二個參數(shù)來傳入一個轉(zhuǎn)換函數(shù)。這個轉(zhuǎn)換函數(shù)可以讓我們自定義反序列化過程。
我們首先判斷字符串是否為我們需要的日期格式,如果是的話,我們就將其轉(zhuǎn)換成JavaScript的Date類型。如果不是日期格式,我們就保持原樣返回。
轉(zhuǎn)換函數(shù)需要傳兩個參數(shù)。第一個參數(shù)是對象中的key,第二個參數(shù)是key所對應(yīng)的值。
通過這種方式,我們就能夠解決JSON中日期格式在反序列化過程中的問題。