Json是一種輕量級(jí)的數(shù)據(jù)交換格式,它常用于Web應(yīng)用程序之間的數(shù)據(jù)傳輸。在JavaScript語(yǔ)言中,可以通過class json {}來(lái)創(chuàng)建Json對(duì)象。
class json { static stringify(obj) { let res = ''; if (obj === null) { res = 'null'; } else if (typeof obj === 'undefined') { res = undefined; } else if (typeof obj === 'number' || typeof obj === 'boolean') { res = obj.toString(); } else if (typeof obj === 'string') { res = '"' + obj + '"'; } else if (Array.isArray(obj)) { const arrStr = obj.map(json.stringify); res = '[' + arrStr.join(',') + ']'; } else if (typeof obj === 'object') { const objStr = []; for (const key in obj) { if (obj.hasOwnProperty(key)) { objStr.push('"' + key + '":' + json.stringify(obj[key])); } } res = '{' + objStr.join(',') + '}'; } return res; } static parse(jsonStr) { return eval('(' + jsonStr + ')'); } }
這個(gè)Json對(duì)象包含兩個(gè)靜態(tài)方法,分別是stringify和parse。stringify方法用于將一個(gè)JavaScript對(duì)象轉(zhuǎn)換為Json字符串,而parse方法則用于將一個(gè)Json字符串轉(zhuǎn)換為JavaScript對(duì)象。
在stringify方法中,我們首先判斷了obj是否為null或undefined,并做出相應(yīng)的處理。對(duì)于數(shù)字或布爾類型的數(shù)據(jù),我們將其轉(zhuǎn)化為字符串。對(duì)于字符串類型的數(shù)據(jù),我們需要在前后加上雙引號(hào)。對(duì)于數(shù)組類型的數(shù)據(jù),我們則遞歸地處理每個(gè)元素。而對(duì)于對(duì)象類型的數(shù)據(jù),我們需要遍歷其所有屬性,并遞歸地處理每個(gè)屬性的值。最后將處理后的結(jié)果組裝成一個(gè)Json格式的字符串返回。
在parse方法中,我們首先使用eval函數(shù)將傳入的Json字符串轉(zhuǎn)化為JavaScript對(duì)象。這種方法雖然簡(jiǎn)單,但是有一定的安全風(fēng)險(xiǎn)。通常情況下,我們不應(yīng)該將未知的Json字符串直接傳入該方法。