javascript
手动实现JSON.stringify
JSON.stringify 是日常開發(fā)中經(jīng)常用到的 JSON 對象中的一個方法,JSON 對象包含兩個方法:一是用于解析成 JSON 對象的 parse();二是用于將對象轉(zhuǎn)換為 JSON 字符串方法的 stringify()。下面我們分別來看下兩個方法的基本使用情況。
JSON.parse
JSON.parse 方法用來解析 JSON 字符串,構(gòu)造由字符串描述的 JavaScript 值或?qū)ο蟆T摲椒ㄓ袃蓚€參數(shù):第一個參數(shù)是需要解析處理的 JSON 字符串,第二個參數(shù)是可選參數(shù)提供可選的 reviver 函數(shù),用在返回之前對所得到的對象執(zhí)行變換操作。
該方法的語法為:JSON.parse(text[, reviver])
用法如下圖所示:
const json = '{"result":true, "count":2}'; const obj = JSON.parse(json); console.log(obj.count); // 2 console.log(obj.result); // true /* 帶第二個參數(shù)的情況 */ JSON.parse('{"p": 5}', function (k, v) {if(k === '') return v; // 如果k不是空,return v * 2; // 就將屬性值變?yōu)樵瓉淼?倍返回 });上面的代碼說明了,我們可以將一個符合 JSON 格式的字符串轉(zhuǎn)化成對象返回;帶第二個參數(shù)的情況,可以將待處理的字符串進(jìn)行一定的操作處理,比如上面這個例子就是將屬性值乘以 2 進(jìn)行返回。
JSON.stringify
JSON.stringify 方法是將一個 JavaScript?對象或值轉(zhuǎn)換為 JSON 字符串,默認(rèn)該方法其實(shí)有三個參數(shù):第一個參數(shù)是必選,后面兩個是可選參數(shù)非必選。第一個參數(shù)傳入的是要轉(zhuǎn)換的對象;第二個是一個 replacer 函數(shù),比如指定的?replacer 是數(shù)組,則可選擇性地僅處理包含數(shù)組指定的屬性;第三個參數(shù)用來控制結(jié)果字符串里面的間距,后面兩個參數(shù)整體用得比較少。
該方法的語法為:JSON.stringify(value[, replacer [, space]])
?用法如下圖所示:
JSON.stringify({ x: 1, y: 2 }); // "{"x":1,"y":2}" JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }) // "{"x":[10,null,null,null]}" /* 第二個參數(shù)的例子 */ function replacer(key, value) {if (typeof value === "string") {return undefined;}return value; } var foo = {foundation: "Mozilla", model: "box", week: 4, transport: "car", month: 7}; var jsonString = JSON.stringify(foo, replacer); console.log(jsonString); // "{"week":4,"month":7}" /* 第三個參數(shù)的例子 */ JSON.stringify({ a: 2 }, null, " "); /* "{"a": 2 }"*/ JSON.stringify({ a: 2 }, null, ""); // "{"a":2}"從上面的代碼中可以看到,增加第二個參數(shù) replacer 帶來的變化:通過替換方法把對象中的屬性為字符串的過濾掉,在 stringify 之后返回的僅為數(shù)字的屬性變成字符串之后的結(jié)果;當(dāng)?shù)谌齻€參數(shù)傳入的是多個空格的時候,則會增加結(jié)果字符串里面的間距數(shù)量,從最后一段代碼中可以看到結(jié)果。
那么如何手動實(shí)現(xiàn)JSON.stringify
?
總結(jié)
以上是生活随笔為你收集整理的手动实现JSON.stringify的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端构建工具的用法—grunt、gulp
- 下一篇: SpringBoot中的Tomcat是如