JSON是一種輕量級的數(shù)據(jù)交換格式,常用于前后端數(shù)據(jù)傳輸和存儲(chǔ)。在JavaScript中,我們經(jīng)常需要把JSON對象轉(zhuǎn)化為字符串,然后再傳輸給后端或者做本地存儲(chǔ)等操作。下面是幾種常用的把JSON轉(zhuǎn)化為字符串的方法:
// 方法1:使用JSON.stringify var obj = {name: "Tom", age: 18}; var str = JSON.stringify(obj); // 轉(zhuǎn)化為字符串 console.log(str); // 輸出: {"name":"Tom","age":18} // 方法2:手動(dòng)遍歷對象 var obj = {name: "Tom", age: 18}; var str = "{"; for (var key in obj) { if (obj.hasOwnProperty(key)) { str += '"' + key + '":' + JSON.stringify(obj[key]) + ","; } } str = str.slice(0, -1) + "}"; // 去掉最后一個(gè)逗號(hào),加上右花括號(hào) console.log(str); // 輸出: {"name":"Tom","age":18} // 方法3:使用eval函數(shù) var obj = {name: "Tom", age: 18}; var str = "(" + JSON.stringify(obj) + ")"; var obj2 = eval(str); console.log(obj2.name); // 輸出: Tom console.log(obj2.age); // 輸出: 18
第一種方法是JSON對象自帶的方法,把一個(gè)JSON對象轉(zhuǎn)化為字符串。其語法為:JSON.stringify(obj, [replacer], [space])
,其中obj
是要轉(zhuǎn)化的JSON對象,replacer
是一個(gè)函數(shù),可以在轉(zhuǎn)換過程中對值進(jìn)行修改,space
指定縮進(jìn)和空格的個(gè)數(shù)。返回一個(gè)字符串。
第二種方法手動(dòng)遍歷對象,把每個(gè)鍵值對轉(zhuǎn)化為字符串,然后用拼接的方式把每個(gè)字符串拼接起來。注意不能直接合并字符串,需要用一個(gè)數(shù)組存儲(chǔ)每個(gè)字符串,最后用join()
方法把字符串?dāng)?shù)組合并為一個(gè)。該方法的缺點(diǎn)在于當(dāng)對象比較復(fù)雜時(shí),手動(dòng)遍歷麻煩且容易出錯(cuò)。
第三種方法使用eval
函數(shù),將JSON字符串轉(zhuǎn)化為JavaScript對象。其缺點(diǎn)在于eval
函數(shù)存在安全風(fēng)險(xiǎn),不建議使用。