在日常前端開(kāi)發(fā)中,我們經(jīng)常需要將服務(wù)器返回的json字符串轉(zhuǎn)換成javascript對(duì)象。這時(shí),我們可以使用eval()函數(shù)來(lái)將json字符串轉(zhuǎn)換成javascript對(duì)象。
eval()函數(shù)可以將字符串轉(zhuǎn)化為可執(zhí)行的javascript代碼,并把執(zhí)行后的結(jié)果返回。因此,我們可以使用eval()函數(shù)來(lái)解析json字符串并將其轉(zhuǎn)換成javascript對(duì)象。
// 定義一個(gè)json字符串 var jsonStr = '{"name":"Tom","age":18,"gender":"male"}'; // 使用eval()函數(shù)將json字符串轉(zhuǎn)換為javascript對(duì)象 var jsonObj = eval('('+ jsonStr +')'); // 輸出javascript對(duì)象 console.log(jsonObj); // 輸出結(jié)果為:{"name":"Tom","age":18,"gender":"male"}
注意,在使用eval()函數(shù)解析json字符串的時(shí)候,必須將json字符串用一對(duì)小括號(hào)括起來(lái)。這是因?yàn)閖son字符串只是一個(gè)普通的字符串,在拼接的時(shí)候需要將其轉(zhuǎn)化為表達(dá)式,而加上小括號(hào)之后就可以將其轉(zhuǎn)化為一個(gè)對(duì)象。
除了使用eval()函數(shù),我們還可以使用JSON.parse()函數(shù)來(lái)將json字符串轉(zhuǎn)換成javascript對(duì)象。JSON.parse()函數(shù)是ES5引入的新函數(shù),可以更方便、更安全地將json字符串轉(zhuǎn)換成javascript對(duì)象。
// 定義一個(gè)json字符串 var jsonStr = '{"name":"Tom","age":18,"gender":"male"}'; // 使用JSON.parse()函數(shù)將json字符串轉(zhuǎn)換為javascript對(duì)象 var jsonObj = JSON.parse(jsonStr); // 輸出javascript對(duì)象 console.log(jsonObj); // 輸出結(jié)果為:{"name":"Tom","age":18,"gender":"male"}
雖然eval()函數(shù)和JSON.parse()函數(shù)都可以將json字符串轉(zhuǎn)換成javascript對(duì)象,但是建議使用JSON.parse()函數(shù),因?yàn)閑val()函數(shù)存在安全隱患。
總之,在日常前端開(kāi)發(fā)中,我們需要將json字符串轉(zhuǎn)換成javascript對(duì)象的時(shí)候,可以使用eval()函數(shù)或JSON.parse()函數(shù)。而由于eval()函數(shù)存在安全隱患,建議使用JSON.parse()函數(shù)。