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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java json.stringify_浅谈 JSON.stringify 方法

發布時間:2023/12/10 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json.stringify_浅谈 JSON.stringify 方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

最近項目中,遇到需要將對象轉換成字符串進行傳遞,上次寫過一篇文章關于json字符串轉換成json對象,json對象轉換成字符串,值轉換成字符串,字符串轉成值。當時主要是用在有時候處理字符串和json對象之間的轉換,寫的主要是怎么用,涉及到JSONstringify具體用法沒有涉及到,有時候對于一個JSON.stringify自帶的方法掌握一下,可能會對于一個問題有更快的解決方案。

二、用法實例

1、方法的定義

2、JSON.stringify提供了參數分離出自己需要的那部分數據

3、JSON.stringify提供了參數回調函數做一個映射關系

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

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

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,'數組');var str_json =JSON.stringify(data);

console.log(str_json,'字符串');

這個是日常的用法,非常簡單。

1、方法的定義

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

參數:

(1)value:必選,要轉換的值(包括所有的數據類型,通常是對象或者數組)

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

rx_escapable.lastIndex = 0;returnrx_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 + "\"";

}

確認并不會傳入每個成員的鍵和值,而僅僅以空字符串形式調用replacer函數。該函數的實質是自定義的用于轉化為JSON字符串的函數。

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

如果省略space,則將生成返回值文本,而沒有任何額外空格。

如果 space是一個數字,則返回值文本在每個級別縮進指定數目的空格。 如果 space 大于 10,則文本縮進 10 個空格。

如果 space是一個非空字符串(例如“\t”),則返回值文本在每個級別中縮進字符串中的字符。

如果 space 是長度大于 10個字符的字符串,則使用前 10 個字符。

2、JSON.stringify提供了分離出自己需要的那部分數據

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

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

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,'數組');//var str_json = JSON.stringify(data);//console.log(str_json,'字符串');

/*提取用戶名和性別*/

for(var i=0,new_data=[];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提供了參數分離出自己需要的那部分數據

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,'數組');//var str_json = JSON.stringify(data);//console.log(str_json,'字符串');

/*提取用戶名和性別-方法1*/

//for(var i=0,new_data=[];i

var str_json = JSON.stringify(data,["name","sex"]);

console.log(str_json);

第二個參數只要傳入需要的keys數組,就非常輕松的處理這個

3、JSON.stringify提供了回調函數做一個映射關系

比如說,我們把sex里的1,0修改為男,女 ,那么第二個參數可以通過回調函數來處理這個映射關系。

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,'數組');//var str_json = JSON.stringify(data);//console.log(str_json,'字符串');

/*提取用戶名和性別-方法1*/

//for(var i=0,new_data=[];i

//var str_json = JSON.stringify(data,["name","sex"]);//console.log(str_json);

/*回調函數做一個映射關系*/

var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ["女",'男'][value];

}returnvalue;

});

console.log(str_json);

第二個參數很厲害,省去了不少的麻煩

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

第三個參數,用于格式化字符串

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,'數組');//var str_json = JSON.stringify(data);//console.log(str_json,'字符串');

/*提取用戶名和性別-方法1*/

//for(var i=0,new_data=[];i

//var str_json = JSON.stringify(data,["name","sex"]);//console.log(str_json);

/*回調函數做一個映射關系*/

//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);

一般情況下用不上,除了可以用于導出這些數據,保存本地查看方便。

最后附上js的代碼,使用node就可以運行這個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,'數組');//var str_json = JSON.stringify(data);//console.log(str_json,'字符串');

/*提取用戶名和性別-方法1*/

//for(var i=0,new_data=[];i

//var str_json = JSON.stringify(data,["name","sex"]);//console.log(str_json);

/*回調函數做一個映射關系*/

var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ['女','男'][value];/*該處注釋等價于return ['女','男'][value];*/

//if(value == 0 ){//value = '女';//}else{//value = '男';//}

}returnvalue;

});

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會自動把所要轉換內容中的漢字轉換為Unicode編碼

2、瀏覽器間有差別,個別瀏覽器會把將要提交表單內容中的Unicode編碼自動轉為漢字(Chrome自動轉換,IE不轉)

總結

以上是生活随笔為你收集整理的java json.stringify_浅谈 JSON.stringify 方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。