日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

浅谈 JSON.stringify 方法

發(fā)布時(shí)間:2024/9/21 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈 JSON.stringify 方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文:淺談 JSON.stringify 方法

一、前言

最近項(xiàng)目中,遇到需要將對(duì)象轉(zhuǎn)換成字符串進(jìn)行傳遞,上次寫過一篇文章關(guān)于json字符串轉(zhuǎn)換成json對(duì)象,json對(duì)象轉(zhuǎn)換成字符串,值轉(zhuǎn)換成字符串,字符串轉(zhuǎn)成值。當(dāng)時(shí)主要是用在有時(shí)候處理字符串和json對(duì)象之間的轉(zhuǎn)換,寫的主要是怎么用,涉及到JSONstringify具體用法沒有涉及到,有時(shí)候?qū)τ谝粋€(gè)JSON.stringify自帶的方法掌握一下,可能會(huì)對(duì)于一個(gè)問題有更快的解決方案。

文章同步的社區(qū):http://www.mwcxs.top/page/426.html?

?

二、用法實(shí)例

1、方法的定義

2、JSON.stringify提供了參數(shù)分離出自己需要的那部分?jǐn)?shù)據(jù)

3、JSON.stringify提供了參數(shù)回調(diào)函數(shù)做一個(gè)映射關(guān)系

4、JSON.stringify提供了參數(shù)格式化字符串

?

用過JSON都知道,把一個(gè)對(duì)象通過stringify之后變成字符串,再提交給后臺(tái)或者存儲(chǔ)在storage是很常用的手段(storage是存的key,value;value只能存字符串,而不能是json對(duì)象)。

var data =[ {name: "程咬金",sex:"1",age:26 }, {name: "程才",sex:"0",age:20 }, {name: "程新松",sex:"1",age:22 }, {name: "程功",sex:"1",age:18 } ]; console.log(data,'數(shù)組'); var str_json = JSON.stringify(data); console.log(str_json,'字符串');

這個(gè)是日常的用法,非常簡(jiǎn)單。

?

1、方法的定義

JSON.stringify ( value [, replacer] [ , space] )

參數(shù):

(1)value:必選,要轉(zhuǎn)換的值(包括所有的數(shù)據(jù)類型,通常是對(duì)象或者數(shù)組)

(2)replace:可選,用于要轉(zhuǎn)換結(jié)果的函數(shù)或者數(shù)組;如果replace是數(shù)組,僅僅是轉(zhuǎn)換具有該鍵值的成員,成員的轉(zhuǎn)換順序和鍵在數(shù)組中的順序一致;如果replace是函數(shù),會(huì)傳入每一個(gè)成員的鍵和值,使用的是返回值而不是原始值,如果函數(shù)返回的是undefined,則排除該成員。查看了JSON2的源碼,

rx_escapable.lastIndex = 0;return rx_escapable.test(string)? "\"" + string.replace(rx_escapable, function (a) {var c = meta[a];return typeof c === "string"? c: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);}) + "\"": "\"" + string + "\"";}

確認(rèn)并不會(huì)傳入每個(gè)成員的鍵和值,而僅僅以空字符串形式調(diào)用replacer函數(shù)。該函數(shù)的實(shí)質(zhì)是自定義的用于轉(zhuǎn)化為JSON字符串的函數(shù)。

?(3)space:可選, 向返回值JSON 文本添加縮進(jìn)、空格和換行符以使其更易于讀取。

如果省略space,則將生成返回值文本,而沒有任何額外空格。 如果 space是一個(gè)數(shù)字,則返回值文本在每個(gè)級(jí)別縮進(jìn)指定數(shù)目的空格。 如果 space 大于 10,則文本縮進(jìn) 10 個(gè)空格。 如果 space是一個(gè)非空字符串(例如“\t”),則返回值文本在每個(gè)級(jí)別中縮進(jìn)字符串中的字符。 如果 space 是長(zhǎng)度大于 10個(gè)字符的字符串,則使用前 10 個(gè)字符。

?

2、JSON.stringify提供了分離出自己需要的那部分?jǐn)?shù)據(jù)

比如說這個(gè)場(chǎng)景,我們的數(shù)據(jù)非常的復(fù)雜,有類似頭像,昵稱,個(gè)人簽名等,可是我保存在本地,只需要用戶名,性別,怎么搞?

方法一:可以用遍歷數(shù)組重新提取一下

var data =[ {name: "程咬金",sex:"1",age:26 }, {name: "程才",sex:"0",age:20 }, {name: "程新松",sex:"1",age:22 }, {name: "程功",sex:"1",age:18 } ]; /*日常用法*/ //console.log(data,'數(shù)組'); //var str_json = JSON.stringify(data); //console.log(str_json,'字符串');/*提取用戶名和性別*/ for(var i=0,new_data=[];i<data.length;i++){new_data.push({name: data[i].name,sex: data[i].sex}); } var str_json = JSON.stringify(new_data); console.log(str_json);

方法二:的確可以這么干,但是JSON.stringify提供了參數(shù)分離出自己需要的那部分?jǐn)?shù)據(jù)

var data =[ {name: "程咬金",sex:"1",age:26 }, {name: "程才",sex:"0",age:20 }, {name: "程新松",sex:"1",age:22 }, {name: "程功",sex:"1",age:18 } ]; /*日常用法*/ //console.log(data,'數(shù)組'); //var str_json = JSON.stringify(data); //console.log(str_json,'字符串');/*提取用戶名和性別-方法1*/ //for(var i=0,new_data=[];i<data.length;i++){ // new_data.push({ // name: data[i].name, // sex: data[i].sex // }); //} //var str_json = JSON.stringify(new_data); //console.log(str_json); /*提取用戶名和性別-方法2*/ var str_json = JSON.stringify(data,["name","sex"]); console.log(str_json);

第二個(gè)參數(shù)只要傳入需要的keys數(shù)組,就非常輕松的處理這個(gè)

?

?3JSON.stringify提供了回調(diào)函數(shù)做一個(gè)映射關(guān)系

比如說,我們把sex里的1,0修改為男,女 ,那么第二個(gè)參數(shù)可以通過回調(diào)函數(shù)來處理這個(gè)映射關(guān)系。

var data =[ {name: "程咬金",sex:"1",age:26 }, {name: "程才",sex:"0",age:20 }, {name: "程新松",sex:"1",age:22 }, {name: "程功",sex:"1",age:18 } ]; /*日常用法*/ //console.log(data,'數(shù)組'); //var str_json = JSON.stringify(data); //console.log(str_json,'字符串');/*提取用戶名和性別-方法1*/ //for(var i=0,new_data=[];i<data.length;i++){ // new_data.push({ // name: data[i].name, // sex: data[i].sex // }); //} //var str_json = JSON.stringify(new_data); //console.log(str_json); /*提取用戶名和性別-方法2*/ //var str_json = JSON.stringify(data,["name","sex"]); //console.log(str_json);/*回調(diào)函數(shù)做一個(gè)映射關(guān)系*/ var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ["女",'男'][value];}return value; }); console.log(str_json);

第二個(gè)參數(shù)很厲害,省去了不少的麻煩

?

4、JSON.stringify提供了參數(shù)格式化字符串

第三個(gè)參數(shù),用于格式化字符串?

var data =[ {name: "程咬金",sex:"1",age:26 }, {name: "程才",sex:"0",age:20 }, {name: "程新松",sex:"1",age:22 }, {name: "程功",sex:"1",age:18 } ]; /*日常用法*/ //console.log(data,'數(shù)組'); //var str_json = JSON.stringify(data); //console.log(str_json,'字符串');/*提取用戶名和性別-方法1*/ //for(var i=0,new_data=[];i<data.length;i++){ // new_data.push({ // name: data[i].name, // sex: data[i].sex // }); //} //var str_json = JSON.stringify(new_data); //console.log(str_json); /*提取用戶名和性別-方法2*/ //var str_json = JSON.stringify(data,["name","sex"]); //console.log(str_json);/*回調(diào)函數(shù)做一個(gè)映射關(guān)系*/ //var str_json = JSON.stringify(data,function(key,value){ // if(key == 'sex'){ // return ["女",'男'][value]; // } // return value; //}); //console.log(str_json);/*格式化字符串*/ var str_json = JSON.stringify(data,null,'\t'); console.log(str_json); var str_json = JSON.stringify(data,['name','sex'],'\t'); console.log(str_json);

一般情況下用不上,除了可以用于導(dǎo)出這些數(shù)據(jù),保存本地查看方便。

?

最后附上js的代碼,使用node就可以運(yùn)行這個(gè)js

var data =[ {name: "程咬金",sex:"1",age:26 }, {name: "程才",sex:"0",age:20 }, {name: "程新松",sex:"1",age:22 }, {name: "程功",sex:"1",age:18 } ]; /*日常用法*/ //console.log(data,'數(shù)組'); //var str_json = JSON.stringify(data); //console.log(str_json,'字符串');/*提取用戶名和性別-方法1*/ //for(var i=0,new_data=[];i<data.length;i++){ // new_data.push({ // name: data[i].name, // sex: data[i].sex // }); //} //var str_json = JSON.stringify(new_data); //console.log(str_json); /*提取用戶名和性別-方法2*/ //var str_json = JSON.stringify(data,["name","sex"]); //console.log(str_json);/*回調(diào)函數(shù)做一個(gè)映射關(guān)系*/ var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ['女','男'][value];/*該處注釋等價(jià)于return ['女','男'][value];*/ // if(value == 0 ){ // value = '女'; // }else{ // value = '男'; // } }return value; }); console.log(str_json);/*格式化字符串*/ //var str_json = JSON.stringify(data,null,'\t'); //console.log(str_json); //var str_json = JSON.stringify(data,['name','sex'],'\t'); //console.log(str_json);

?

注意:

1、JSON.stringify會(huì)自動(dòng)把所要轉(zhuǎn)換內(nèi)容中的漢字轉(zhuǎn)換為Unicode編碼
2、瀏覽器間有差別,個(gè)別瀏覽器會(huì)把將要提交表單內(nèi)容中的Unicode編碼自動(dòng)轉(zhuǎn)為漢字(Chrome自動(dòng)轉(zhuǎn)換,IE不轉(zhuǎn))

?

總結(jié)

以上是生活随笔為你收集整理的浅谈 JSON.stringify 方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人干人| 久久久久亚洲视频 | 久久久综合视频 | www性| 免费看一级视频 | 国产精品无码一本二本三本色 | 中文字幕不卡 | 蜜桃久久av一区 | 第一页综合 | 久久少妇av | 香蕉视频黄色在线观看 | 免费淫片 | 天天爱天天色 | 欧美精品一 | 一极毛片 | 污污视频免费网站 | 黄色资源在线 | av解说在线观看 | 激情视频在线播放 | 欧美日韩不卡视频 | 一卡二卡在线视频 | 高潮毛片无遮挡高清免费 | 亚洲综合激情小说 | 五月婷婷爱爱 | 国产中文字幕在线视频 | 超碰av在线免费观看 | 日韩影音| 少妇精品视频一区二区 | 久久无码人妻精品一区二区三区 | av自拍偷拍 | 息与子五十路翔田千里 | 精品国产无码在线 | 欧美日韩亚洲色图 | 国产人妻777人伦精品hd | 99久久久无码国产精品性黑人 | 亚洲欧美乱综合图片区小说区 | 日韩色av | 国产香蕉av | 伊人草 | 日本免费一级片 | 中文字幕在线三区 | 国产自偷自拍 | 91片黄在线观看 | 91av官网 | 在线免费观看黄色网址 | 在线观看网页视频 | 香蕉911| 欧美日韩国产免费 | 亚洲人体一区 | 波多野结衣1区 | 亚州精品国产精品乱码不99按摩 | 成人一级黄色 | 性日韩 | 日韩欧美高清在线观看 | 国产成人午夜精品无码区久久 | 国产精品久久久久久久久久久久久久久久 | 小伸进喷水网站 | 色综合狠狠操 | 亚洲国产乱 | 伊人久久大香线蕉综合网站 | 久久综合色鬼 | 91久久综合亚洲鲁鲁五月天 | 天天色影综合网 | 日韩少妇一区二区三区 | 97精品久久人人爽人人爽 | 国产精品久久久久久久久久久久久久久久久久 | 成人av影院在线观看 | 国产不卡在线视频 | 狠狠干夜夜干 | 久草香蕉在线 | 美女高潮黄又色高清视频免费 | 久久1234| av国产精品 | 欧美精品中文 | 青草青在线视频 | 国产精品国产三级国产在线观看 | 夜夜天天 | 青青草成人免费视频 | 午夜av在线免费观看 | av官网| 91美女啪啪| 操穴网站 | 色爽爽一区二区三区 | 欧美小视频在线 | 久久人妻免费视频 | 久久久久人妻一区精品色欧美 | 欧美日韩久 | 成人在线小视频 | 精品日韩在线播放 | 久久入 | 色婷婷色综合 | 99视频国产精品 | 性生交大片免费看女人按摩 | 好吊色视频988gao在线观看 | 国产又爽又黄无码无遮挡在线观看 | 操她视频在线观看 | www国产精品 | xxxxx色 | av字幕网|