JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,易于讀寫和解析。在前后端分離的開發(fā)模式下,我們經(jīng)常需要使用JSON格式傳輸數(shù)據(jù)。為了方便傳輸,在實(shí)際開發(fā)中我們需要把一個(gè)JSON對(duì)象打包成字符串的形式進(jìn)行傳輸,然后在客戶端解析成對(duì)象。
//示例JSON對(duì)象 var student = { "name": "Tom", "age": 18, "gender": "male" }; //使用JSON.stringify()方法將JSON對(duì)象打包成字符串 var studentStr = JSON.stringify(student); console.log(studentStr);//輸出 {"name":"Tom","age":18,"gender":"male"}
上述代碼中,我們使用了JSON.stringify()方法將JSON對(duì)象打包成字符串的形式。該方法接受一個(gè)JavaScript對(duì)象作為參數(shù),返回一個(gè)JSON格式的字符串。打包后的字符串中,屬性名和屬性值都必須使用雙引號(hào)包裹,否則會(huì)報(bào)語法錯(cuò)誤。
在使用JSON.stringify()方法打包JSON對(duì)象時(shí),還可以傳遞一個(gè)處理函數(shù)作為第二個(gè)參數(shù)進(jìn)行定制化轉(zhuǎn)換。這個(gè)函數(shù)的作用是在打包過程中對(duì)對(duì)象進(jìn)行變換,可以刪除屬性、替換屬性名等操作。示例如下:
//示例JSON對(duì)象 var student = { "name": "Tom", "age": 18, "gender": "male", "hobby": ["swimming", "running"] }; //自定義處理函數(shù),排除hobby屬性 function filter(key, value) { if (key === 'hobby') { return undefined;//排除hobby屬性 } return value; } //使用自定義處理函數(shù)將JSON對(duì)象打包成字符串 var studentStr = JSON.stringify(student, filter); console.log(studentStr);//輸出 {"name":"Tom","age":18,"gender":"male"}
使用JSON打包成字符串是前后端順利交互的關(guān)鍵所在,開發(fā)者們?cè)趯?shí)踐中要嚴(yán)格按規(guī)定使用雙引號(hào),必要時(shí)可以通過自定義處理函數(shù)進(jìn)行定制化變換。