一文詳解JSON.parse和JSON.stringify的用法
前言
平時(shí)我們?cè)诮邮蘸蠖朔祷氐膉son對(duì)象通常是一個(gè)字符串類型的object,所以一般我們要對(duì)這個(gè)object進(jìn)行類型轉(zhuǎn)化后,我們才能使用object里面的數(shù)據(jù),而這其中涉及到兩個(gè)必不可少的方法就是JSON.parse和JSON.stringify
JSON.parse()
JSON.parse()方法將JSON格式字符串轉(zhuǎn)換為js對(duì)象(屬性名沒有雙引號(hào))
解析前要保證數(shù)據(jù)是標(biāo)準(zhǔn)的JSON格式,否則會(huì)解析出錯(cuò)
const user = '{"name": "Jack","gender": "男","age": 18,"major":"computer"}' console.log(JSON.parse(user)); //user = { name:"Jack", gender:"男", age:18, major:"computer"}
輸出結(jié)果:
const users = '[{"id":101,"name":"計(jì)算機(jī)科學(xué)"},{"id":102,"name":"軟件工程"}]' console.log(JSON.parse(users)); // 結(jié)果 users= [ {id:101,name:"計(jì)算機(jī)科學(xué)"}, {id:102,name:"軟件工程"} ]
JSON.stringify()
const user = {"name": "Jack","gender": "男","age": 18,"major":"computer"} console.log(user);
console.log()沒有輸出我們想要的結(jié)果。它輸出了[Object],因?yàn)閺膶?duì)象到字符串的默認(rèn)轉(zhuǎn)換是“[Object]”。因此,我們使用JSON.stringify()先將對(duì)象轉(zhuǎn)換為字符串
console.log(JSON.stringify(user));
但是,stringify()其實(shí)還可以傳入其他的參數(shù)從而方便我們查找數(shù)據(jù),讓我們接著往下看
第二個(gè)參數(shù)(數(shù)組)
假如存在這樣一個(gè)場景,一個(gè)學(xué)生擁有很多個(gè)手機(jī)號(hào)碼,我們想迅速定位到該學(xué)生的某個(gè)手機(jī)號(hào),我們可以在stringify()第二個(gè)位置以數(shù)組的形式加參數(shù)來進(jìn)行查找
const user = {"name": "Jack", "gender": "男", "age": 18, "major":"computer", "phonenumber":123, "phonenumber1":456, "phonenumber2":789, "phonenumber3":321, "phonenumber4":654, "phonenumber5":987 } console.log(JSON.stringify(user,['phonenumber3']));
輸出結(jié)果:
第三個(gè)參數(shù)(數(shù)字)
第三個(gè)參數(shù)控制最終字符串里的間距。如果參數(shù)是一個(gè)數(shù)字,則字符串化中的每個(gè)級(jí)別,都將縮進(jìn)這個(gè)空格字符數(shù)。即不傳這個(gè)參數(shù)一行顯示,加了分行顯示。
const user = {"name": "Jack", "gender": "男", "age": 18, "major":"computer", "phonenumber":123, "phonenumber1":456, "phonenumber2":789, "phonenumber3":321, "phonenumber4":654, "phonenumber5":987 } console.log(user); console.log(JSON.stringify(user,null,2));
輸出結(jié)果:
第三個(gè)參數(shù)(字符串)
如果第三個(gè)參數(shù)是字符串,則用它來代替上面顯示的空格字符。我這里傳入**
const user = {"name": "Jack", "gender": "男", "age": 18, "major":"computer", "phonenumber":123, "phonenumber1":456, "phonenumber2":789, "phonenumber3":321, "phonenumber4":654, "phonenumber5":987 } console.log(JSON.stringify(user,null,'**'));
輸出結(jié)果:
toJSON函數(shù)
我們有一個(gè)名為toJSON的類函數(shù),它的屬性是可以作為任何對(duì)象的一部分。JSON.stringify返回這個(gè)函數(shù)的結(jié)果并對(duì)其進(jìn)行字符串化,而不是將全部對(duì)象轉(zhuǎn)換為字符串。
const user = { firstName : "Prateek", lastName : "Singh", age : 26, toJSON(){ return { fullName: `${this.firstName}${this.lastName}` } } } console.log(JSON.stringify(user));
輸出結(jié)果:
可以看到,它不是輸出全部對(duì)象,而是只有toJSON函數(shù)的結(jié)果。
此外,JS還有一個(gè)功能函數(shù)是parseInt,注意不要將它和JSON.parse( )混淆了,parseInt函數(shù)的功能是可解析一個(gè)字符串,返回一個(gè)整數(shù)。假如有一個(gè)字符串類型的數(shù)字,經(jīng)過轉(zhuǎn)化后就會(huì)變成一個(gè)數(shù)字類型的數(shù)字,如果是字母類型的字符串則返回NaN。
小技巧:直接加+也可以起到parseInt的作用。
參考的文章:https://baijiahao.baidu.com/s?id=1662484165706074595&wfr=spider&for=pc
總結(jié)
到此這篇關(guān)于JSON.parse和JSON.stringify用法的文章就介紹到這了,更多相關(guān)JSON.parse和JSON.stringify用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JSON.parse()和JSON.stringify()使用介紹
- 關(guān)于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
- 談?wù)凧SON對(duì)象和字符串之間的相互轉(zhuǎn)換JSON.stringify(obj)和JSON.parse(string)
- 深入淺析JSON.parse()、JSON.stringify()和eval()的作用詳解
- JS使用JSON.parse(),JSON.stringify()實(shí)現(xiàn)對(duì)對(duì)象的深拷貝功能分析
- 詳解關(guān)于JSON.parse()和JSON.stringify()的性能小測試
- JSON中key動(dòng)態(tài)設(shè)置及JSON.parse和JSON.stringify()的區(qū)別
- 淺談JSON.parse()和JSON.stringify()
- JavaScript 中 JSON.parse 函數(shù) 和 JSON.stringify 函數(shù)
- json.stringify()與json.parse()的區(qū)別以及用處
相關(guān)文章
javascript回車完美實(shí)現(xiàn)tab切換功能
這篇文章主要介紹了javascript通過回車實(shí)現(xiàn)tab切換功能,需要的朋友可以參考下2014-03-03利用javascript移動(dòng)div層-javascript 拖動(dòng)層
利用javascript開發(fā)在界面上隨意拖動(dòng)以下html code中的div層2009-03-03微信小程序?qū)崿F(xiàn)modal彈出框遮罩層組件(可帶文本框)
這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)modal彈出框遮罩層組件(可帶文本框)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解
這篇文章主要介紹了video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解,主要思路是點(diǎn)擊進(jìn)度條需要獲取拖動(dòng)前的時(shí)間點(diǎn),具體實(shí)例代碼大家跟隨小編一起看看吧2018-08-08JavaScript實(shí)現(xiàn)讀取與輸出XML文件數(shù)據(jù)的方法示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)讀取與輸出XML文件數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了JavaScript基于ActiveXObject實(shí)現(xiàn)載入、讀取與輸出xml文件數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06javascript 判斷數(shù)組是否已包含了某個(gè)元素的函數(shù)
javascript判斷數(shù)組是否已包含了某個(gè)元素的js函數(shù),方便數(shù)組的判斷。2010-05-05js將json格式內(nèi)容轉(zhuǎn)換成對(duì)象的方法
這篇文章介紹了js將json格式內(nèi)容轉(zhuǎn)換成對(duì)象的方法,有需要的朋友可以參考一下2013-11-11