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

歡迎訪問 生活随笔!

生活随笔

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

javascript

java json.stringify_JSON.stringify() 方法

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

功能非常簡單的一個方法,但是有很多細節需要注意,本文通過代碼實例詳細介紹。

由此方法的名稱入手,從 simplify 單詞分析開始:

(1).simplify 是由 simple 衍化而來,加上 ify 后綴,變成一個動詞,功能是使 ... 簡單化。

(2).同樣的道理,stringify 是由 string 衍化而來,加上 ify 后綴,功能是使 ... 字符串化。

JSON.stringify() 的定義是將參數轉換為 JSON,其實就是將參數轉換為字符串。

當然轉換是需要遵循一定規則的,后面會分步進行詳細介紹。

語法結構:

```javascript

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

```

參數解析:

(1).value:必需,要被轉換的 JavaScript 值,通常情況下是對象直接量或者數組。

(2).replacer:可選,對 value 進行轉換的函數或者數組。

(3).space:可選,向返回的 JSON 中的內容添加縮進、空白和換行符以使其更易于閱讀。

上面對參數的作用做了一下簡單介紹,讓讀者對其有一個初步印象,具體作用在下面代碼實例中介紹。

**代碼實例如下:**

絕大多數時候此方法是對對象或者數組的操作,實際項目中最為常見。

又由于此方法的操作就是將參數轉換為 JSON,所以很多朋友想當然認為 JSON 只能是如下兩種類似形式:

```javascript

{

"webName":"先思考后編碼",

"url":"codingbefore.com",

"age":2

}

```

再來看一個和數組相互嵌套的形式:

```javascript

{

"web": [

{ "webName":"先思考后編碼" , "url":"codingbefore.com" },

{ "webName":"網易" , "url":"163.com" }

]

}

```

其實并不是只有上述兩種形式,看如下代碼實例:

```javascript

console.log(JSON.stringify(5));

console.log(JSON.stringify(true));

console.log(JSON.stringify("antzone"));

console.log(JSON.stringify(null));

console.log(JSON.stringify(undefined));

console.log(JSON.stringify(function(){}));

console.log(JSON.stringify(Symbol("前端教程")));

```

![](/upload/1586420625277.jpg)

具有結果的都是JSON數據,并不僅僅是對象或者數組被轉換后的字符串是JSON。

上述代碼分析如下:

(1).數字會被轉換為字符串"5"。

(2).布爾值true被轉換為字符串"true"。

(3).字符串"antzone",打印結果帶有雙引號,字符串本身帶有雙引號,JSON.stringify()方法將"antzone"整體作為字符串處理,所以處理的結果是"\"antozne\"",如果是用單引號包裹,也會被轉換為雙引號。

(4).null會被轉換為字符串"null"。

(5).undefined、function函數和Symbol數據會被忽略。

```javascript

console.log(JSON.stringify(new Date()));

```

代碼運行效果截圖如下:

![![](/upload/1586420596792.jpg)

打印出一段與時間日期相關的字符串,這是因為時間日期對象具有toJSON方法。

轉換過程中,如果對象具有toJSON方法,那么會首先調用此方法,具體參閱[toJSON() 方法](http://www.codingbefore.com/article-8584-1.html)一章節。

```javascript

let antzone={

webName:'先思考后編碼',

target:"分享互助",

age:5

}

console.log(JSON.stringify(antzone));

```

上述代碼只有一個參數,可以看到屬性被雙引號包裹,這一點要特別注意,一定是雙引號。

如果屬性值原本是字符串,那么一定也要用雙引號包裹,如果原來是單引號,也要轉換為雙引號。

```javascript

let arr=["先思考后編碼",'分享互助',3];

console.log(JSON.stringify(arr));

```

類似,數組中的數據,如果原本是字符串,一定要采用雙引號包裹。

**具有兩個參數的情況:**

JSON.stringify()第二個參數可以是兩種形式,一種是函數,第二種是數組,下面分別做一下介紹。

**1.當是函數的情況:**

具有兩個參數,分別是對象屬性和屬性值,或者數組索引和數組值。

它的返回值對于value參數的序列化結果有直接的影響。

(1).如果返回值是undefined,那么value參數序列化的結果為 undefined 或者當前遞歸序列化對象的屬性被刪除。

(2).如果返回值是一個對象,那么該對象會被遞歸序列化。

```javascript

let arr=["先思考后編碼","antzone",5];

function done(key,value){

}

let jsonStr=JSON.stringify(arr,done);

console.log(jsonStr);

```

上面的代碼中,數組被序列化后的結果為undefined,因為第二個參數函數的返回值是undefined。

```javascript

let obj={

webName:"antzone",

age:2,

target:"分享互助",

team:{

a:"jquery專區",

b:"css專區"

}

}

function done(key,value){

if(value=="antzone"){

return undefined;

}

else{

return value;

}

}

let jsonStr=JSON.stringify(obj,done);

console.log(jsonStr);

```

屬性值為"antzone",對應屬性就會被刪除,如果此函數返回的值是對象的話,會將此返回的對象遞歸序列化。

**2.當是數組的時候:**

(1).如果value參數是數組,那么第二個參數數組不起任何作用。

如果對象屬性名稱在數組元素中存在,那么此屬性將會被保留,否則會被刪除。

```javascript

let one=["先思考后編碼","antzone","分享互助",3];

let two=["antzone",3];

let jsonStr=JSON.stringify(one,two);

console.log(jsonStr);

```

第二個數組參數不會起到任何作用。

```javascript

let obj={

antzone:"先思考后編碼",

target:"分享互助",

age:3

}

let arr=["antzone",3];

let jsonStr=JSON.stringify(obj,arr);

console.log(jsonStr);

```

第二個參數數組會對對象屬性進行過濾,如果對象屬性名稱在數組中存在,那么就會保留,否則刪除。

**具有三個參數的情況:**

可以向返回值JSON文本添加縮進,具體規則如下:

(1).如果聲明此參數,則將生成返回值文本,而沒有任何額外空白。

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

(3).如果是一些轉義字符,比如“\t”,表示回車,那么它每行一個回車。

(4).如果是非空字符串,則返回值文本在每個級別字符串前面附加上返回的字符串即可。

(5).如果是長度大于10個字符的字符串,則使用前10個字符。

(6).由于這個比較簡單,就不給出代碼了,通常情況下,第三個參數都是省略的。

**undefined、function和Symbol處理:**

在文章的開頭部分已經提到過,JSON數據不支持上述三種類型數據。

但是在不同的上下文中,JSON.stringify() 方法對它們的處理方式不同。

直接通過JSON.stringify() 方法轉換三種數據,方法的返回值是undefined,也可以認為被轉換為了undefined。

如果上述三種類型的值作為對象屬性,那么會直接被忽略,代碼如下:

```javascript

let antzone={

webName:"先思考后編碼",

age:undefined,

func:function(){},

sy:Symbol("前端教程")

}

console.log(JSON.stringify(antzone));

```

可以看到值為上述三種類型的屬性直接被無視了。

如果上述三種類型的值作為數組成員,那么會被轉換為null,代碼如下:

```javascript

let arr=["先思考后編碼",undefined,function(){},Symbol("前端教程")];

console.log(JSON.stringify(arr));

```

可以看到三種類型的數據,在數組中被轉換成了null。

總結

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

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