JSON.stringify() 方法
一.基本介紹:
此方法可以將JavaScript值轉換為JSON格式字串。
通常情況下要被轉換的值是物件直接量或者陣列。
語法結構:
[JavaScript] 純文字檢視 複製程式碼JSON.stringify(value [, replacer] [, space])
引數解析:
(1).value:必需,要被轉換的JavaScript值,可以是任意值,通常情況下是物件直接量或者陣列。
(2).replacer:可選,用以進行對value進行轉換的函式或者陣列。
(3).space:可選,向返回的JSON中的內容新增縮排、空白和換行符以使其更易於閱讀。
上面只是對引數的作用做了一下簡單介紹,可以讓讀者對其有一個初步印象,具體的作用在程式碼下面的程式碼例項中介紹。
二.程式碼例項:
(1).只具有第一個引數的情況:
[JavaScript] 純文字檢視 複製程式碼var obj={ webName:"螞蟻部落", target:"分享互助", age:3 } console.log(JSON.stringify(obj));
上面的程式碼只含有第一個引數,並且引數是一個物件直接量。
[JavaScript] 純文字檢視 複製程式碼var arr=["螞蟻部落","分享互助",3]; console.log(JSON.stringify(arr));
再來看一段程式碼:
[JavaScript] 純文字檢視 複製程式碼var date=new Date(); var str=new String("螞蟻部落"); console.log(JSON.stringify(date)); console.log(JSON.stringify(str));
如果函式的第一個引數是物件,那麼引數物件會首先嚐試呼叫toJSON()方法。
只有Date物件具有內建的toJSON()函式,對於String、Number和Boolean物件在json2.js中是使用自定義的方式,呼叫的valueOf()函式,程式碼截圖如下:
關於toJSON()方法可以參閱toJSON()一章節。
(1).具有兩個引數的情況:
JSON.stringify()第二個引數可以是兩種形式,一種是函式,第二種是陣列,下面分別做一下介紹。
當是函式的情況:
具有兩個引數,分別是物件的屬性和屬性值,或者陣列的索引和物件的陣列值。
它的返回值對於value引數的序列化結果有直接的影響。
1).如果返回值是undefined,那麼value引數序列化的結果為undefined或者當前遞迴序列化物件的屬性被刪除。
2).如果返回值是一個物件,那麼該物件會被遞迴序列化。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var arr=["螞蟻部落","antzone",2]; function done(key,value){ } var jsonText=JSON.stringify(arr,done); console.log(jsonText);
上面的程式碼中,陣列被序列化後的結果為undefined,因為第二個引數函式的返回值是undefined。
[JavaScript] 純文字檢視 複製程式碼var obj={ webName:"antzone", age:2, target:"分享互助", team:{ a:"jquery專區", b:"css專區" } } function done(key,value){ if(value=="antzone"){ return undefined; } else{ return value; } } var jsonText=JSON.stringify(obj,done); console.log(jsonText);
當屬性值為"antzone"的時候,那麼對應的屬性就會被刪除,如果此函式返回的值是物件的話,那麼會將此返回的物件遞迴序列化。
當是陣列的時候:
如果第二個引數是陣列,主要分如下兩種情況:
(1).如果value引數是陣列,那麼第二個引數陣列不起任何作用。
(2).如果value引數是物件,那麼第二個引數陣列會對第一個引數屬性起到過濾作用,規則如下:
如果物件屬性名稱在陣列元素中存在,那麼此屬性將會被保留,否則會被刪除。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var one=["螞蟻部落","antzone","分享互助",3]; var two=["antzone",3]; var jsonText=JSON.stringify(one,two); console.log(jsonText);
第二個陣列引數不會起到任何作用。
[JavaScript] 純文字檢視 複製程式碼var obj={ antzone:"螞蟻部落", target:"分享互助", age:3 } var arr=["antzone",3]; var jsonText=JSON.stringify(obj,arr); console.log(jsonText);
第二個引數陣列會對物件屬性進行過濾,如果物件屬性名稱在陣列中存在,那麼就會保留,否則刪除。3.第三個引數的作用:
可以向返回值JSON文字新增縮排,具體規則如下:
如果宣告此引數,則將生成返回值文字,而沒有任何額外空白。
如果是數字,則返回值文字在每個級別縮排指定數目的空格。 如果 space 大於 10,則文字縮排 10 個空格。
如果是一些轉義字元,比如“\t”,表示回車,那麼它每行一個回車。
如果是非空字串,則返回值文字在每個級別字串前面附加上返回的字串即可。
如果是長度大於10個字元的字串,則使用前10個字元。
由於這個比較簡單,就不給出程式碼了,通常情況下,第三個引數都是省略的。
相關文章
- JSON.stringify 的使用JSON
- 學習JSON.stringify()JSON
- JSON.stringify 新手入門JSON
- 理解JSON.stringify()高階用法JSON
- 如何提升JSON.stringify()的效能?JSON
- JSON.stringify() 的深入理解JSON
- 如何提升JSON.stringify的效能?JSON
- JSON.parse與JSON.stringify(object)JSONObject
- 你不知道的 JSON.stringifyJSON
- 你不知道的JSON.stringify()妙用JSON
- JSON.parse 和 JSON.stringify 詳解JSON
- 前端 JavaScript 中 JSON.stringify() 的基本用法前端JavaScriptJSON
- 有意思的JSON.parse()、JSON.stringify()JSON
- 比 JSON.stringify 快兩倍的fast-json-stringifyJSONAST
- JSON.parse()與JSON.stringify()的用法,以及eval()和new FunctionJSONFunction
- JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆物件的區別JavaScriptStructJSON物件
- JSON.stringify()與JSON.parse()沒有你想的那樣簡單JSON
- 如何解決使用JSON.stringify時遇到的迴圈引用問題JSON
- 二維陣列JSON.stringify 後,第二層陣列解析為空陣列JSON
- 就因為JSON.stringify,我的年終獎差點打水漂了JSON
- 實現深拷貝還在用JSON.parse(JSON.stringify(obj))?帶你用JS實現一個完整版深拷貝函式JSONOBJ函式
- Java中parse方法,ValueOf方法,toString方法Java
- Java的方法靜態方法Java
- js includes方法 和 filter方法JSFilter
- 方法
- initialize方法與load方法比較
- Java System類,currentTimeMillis方法,arraycopy方法。Java
- Java方法03:方法的過載Java
- [方法]需求挖掘採集的方法
- javaSE-day04--ArrayList基本用方法、類內定義方法和方法過載、靜態方法static(類的方法)、工具方法(static)的定義和使用Java
- wait()方法與await()方法的區別AI
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- getPropertyPriority() 方法
- deleteRule() 方法delete
- getPropertyValue() 方法
- getBoundingClientRect() 方法GCclient
- removeProperty() 方法REM
- Equals方法