文章編號(hào):11558時(shí)間:2024-10-01人氣:
JSON.stringify() 函數(shù)用于將 JavaScript 值轉(zhuǎn)換為 JSON 字符串。JSON (JavaScript 對(duì)象符號(hào)) 是一種輕量級(jí)的數(shù)據(jù)格式,易于在應(yīng)用程序之間傳輸和存儲(chǔ)數(shù)據(jù)。
JSON.stringify(value, replacer, space)其中: value: 要序列化的 JavaScript 值。它可以是對(duì)象、數(shù)組、字符串、數(shù)字或布爾值。 replacer: 可選參數(shù),是一個(gè)函數(shù)或數(shù)組,用于自定義序列化過程。 space: 可選參數(shù),指定生成的 JSON 字符串中的縮進(jìn)量。
const value = {name: "John",age: 30
};const json= JSON.stringify(value);console.log(json); // {"name":"John","age":30}
const value = {name: "John",age: 30,password: "secret"
};const replacer = (key, value) => {if (key === "password") {return undefined;} else {return value;}
};const json = JSON.stringify(value, replacer);console.log(json); // {"name":"John","age":30}
const value = {name: "John",age: 30,address: {street: "Main Street",city: "Anytown"}
};const json = JSON.stringify(value, null, 2);console.log(json);
/
{"name": "John","age": 30,"address": {"street": "Main Street","city": "Anytown"}
}
/
JSON.parse() 的語法如下:
JSON.parse(tExt, reviver)其中: text: 要解析的 JSON 字符串。 reviver: 可選參數(shù),是一個(gè)函數(shù),用于自定義解析過程。
示例:將 JSON 字符串解析為 JavaScript 對(duì)象:
const json = '{"name":"John","age":30}';const obj = JSON.parse(json);console.log(obj); // {name: "John", age: 30}
((object))就是利用 將js對(duì)象序列化(JSON字符串),再使用來反序列化(還原)js對(duì)象;序列化的作用是存儲(chǔ)(對(duì)象本身存儲(chǔ)的只是一個(gè)地址映射,如果斷電,對(duì)象將不復(fù)存在,因此需將對(duì)象的內(nèi)容轉(zhuǎn)換成字符串的形式再保存在磁盤上 )和傳輸。 關(guān)于使用時(shí)需要注意以下幾點(diǎn): 1、如果object里面有 時(shí)間對(duì)象 ,則后再的結(jié)果,時(shí)間將只是字符串的形式。 而不是時(shí)間對(duì)象; 2、如果object里有 RegExp、Error對(duì)象 ,則序列化的結(jié)果將只得到空對(duì)象; 3、如果obj里有 函數(shù)、undefined、symbol ,則序列化的結(jié)果會(huì)把函數(shù)或 undefined丟失; 4、如果obj里有 NaN、Infinity和-Infinity ,則序列化的結(jié)果會(huì)變成null 5、()只能序列化對(duì)象的可枚舉的自有屬性,例如 如果obj中的對(duì)象是有 構(gòu)造函數(shù) 生成的, 則使用((obj))深拷貝后,會(huì)丟棄對(duì)象的 constructor ; 6、如果對(duì)象中存在 循環(huán)引用 的情況也無法正確實(shí)現(xiàn)深拷貝;
理解了有限狀態(tài)機(jī),編寫各類解析器變得簡單,關(guān)鍵在于設(shè)計(jì)狀態(tài)轉(zhuǎn)換的邏輯。 手寫有兩大實(shí)現(xiàn)路徑,第一種是入門級(jí),相對(duì)容易;第二種則是利用狀態(tài)機(jī)解析字符流,這需要了解一些編譯原理,否則理解起來可能較為困難。 初級(jí)版本的直接使用eval函數(shù)實(shí)現(xiàn),但要注意在JSON字符串前后加上括號(hào),否則會(huì)被誤認(rèn)為是代碼塊并報(bào)錯(cuò)。 高級(jí)版本的主要利用有限狀態(tài)機(jī)進(jìn)行分詞,然后根據(jù)分詞數(shù)據(jù)構(gòu)建JSON對(duì)象。 分詞階段的狀態(tài)設(shè)計(jì)相對(duì)復(fù)雜,可以從簡單的狀態(tài)開始,逐步增加難度以完善代碼。 以下版本僅考慮了一些簡單場景,特別是嵌套數(shù)組,直接將其視為一個(gè)token,不支持內(nèi)部嵌套數(shù)組,以便于理解。 將分詞數(shù)組拼接成JSON,主要使用棧來緩存正在處理的對(duì)象。 在處理內(nèi)部嵌套的引用類型值時(shí),需要記住父對(duì)象的key(子對(duì)象處理完畢后再賦值給父對(duì)象的key)。 這里我在讀取到key時(shí),會(huì)在當(dāng)前對(duì)象上存儲(chǔ)key值,注意需要使用symbol類型添加屬性,否則可能會(huì)覆蓋對(duì)象中同名屬性。 在設(shè)置完對(duì)應(yīng)key的屬性值后,再刪除自己添加的這個(gè)symbol屬性。 也可以通過一個(gè)棧來存儲(chǔ)每次讀取到的key,每次設(shè)置值時(shí)出棧即為當(dāng)前要操作的key。 以下是測試效果的簡版,旨在展示核心原理。 它未處理許多異常情況,主要利用遞歸方法處理值中的對(duì)象和數(shù)組,其他基本數(shù)據(jù)類型則直接轉(zhuǎn)換為對(duì)應(yīng)的toString形式拼接。
深入理解 () 和 () 的功能和用法,對(duì)于對(duì)象與JSON字符串的交互至關(guān)重要。 這兩個(gè)方法在轉(zhuǎn)換和序列化過程中起著核心作用。
() 是將JSON字符串解析為JavaScript對(duì)象的關(guān)鍵工具。 最常見的用法是將字符串轉(zhuǎn)換為包含數(shù)據(jù)的對(duì)象。 然而,在特殊情況下,如計(jì)算員工高溫費(fèi),可通過reviver函數(shù)實(shí)現(xiàn)屬性過濾或刪除。 需要注意的是,如果輸入的JSON格式有誤,它會(huì)拋出SyntaxError異常。
與之相對(duì),() 負(fù)責(zé)將JavaScript對(duì)象轉(zhuǎn)換為JSON字符串。 使用時(shí),可以指定特定屬性進(jìn)行序列化,或者處理數(shù)組和非數(shù)組對(duì)象的轉(zhuǎn)換規(guī)則。 遇到循環(huán)引用或BigInt類型時(shí),會(huì)引發(fā)TypeError異常。 MDN文檔提供了詳細(xì)的行為規(guī)范,包括值的序列化規(guī)則和異常處理。
其他應(yīng)用場景在Vue開發(fā)中,((...)) 的組合使用常常被用來實(shí)現(xiàn)深拷貝操作,這里我們來詳細(xì)探討一下。 首先,() 和 () 分別有其獨(dú)特的功能:- () 是將一個(gè)JSON格式的字符串解析成JavaScript對(duì)象,例如:原始字符串: var str = {name:huahua,age:22};解析操作: (str);這會(huì)得到一個(gè)對(duì)象: var obj = {name:hua,age: 26};- 而 () 則是將JavaScript對(duì)象轉(zhuǎn)換成JSON格式的字符串。 當(dāng)你直接對(duì)一個(gè)對(duì)象執(zhí)行 (),得到的字符串其實(shí)是一個(gè)淺拷貝,因?yàn)樽址皇且昧嗽紝?duì)象的地址。 為了實(shí)現(xiàn)深拷貝,即創(chuàng)建一個(gè)全新的對(duì)象并復(fù)制所有屬性,可以先將對(duì)象轉(zhuǎn)為字符串,再解析回對(duì)象,這樣就創(chuàng)建了獨(dú)立的新對(duì)象,即:深拷貝示例: = (())這樣做的效果是,即使原始對(duì)象()有嵌套的對(duì)象或數(shù)組,深拷貝也會(huì)為這些內(nèi)容創(chuàng)建新的副本,確保在修改vueData時(shí)不會(huì)影響到原始對(duì)象()。 總的來說,這是一種在Vue中實(shí)現(xiàn)對(duì)象深度復(fù)制的有效方法。
JavaScript對(duì)象可通過使用()函數(shù)轉(zhuǎn)換為JSON字符串。 比如,我們有一個(gè)JavaScript對(duì)象:轉(zhuǎn)換結(jié)果如下:JSON字符串轉(zhuǎn)對(duì)象JSON字符串能夠通過()函數(shù)轉(zhuǎn)換回JavaScript對(duì)象。 例如,我們有一個(gè)JSON字符串:轉(zhuǎn)換結(jié)果如下:需要注意的是,JSON字符串必須符合JSON規(guī)范,否則會(huì)引發(fā)異常。 例如,以下JSON字符串中,屬性名不應(yīng)使用單引號(hào):當(dāng)使用()方法時(shí),將拋出異常“Uncaught SyntaxError”。
內(nèi)容聲明:
1、本站收錄的內(nèi)容來源于大數(shù)據(jù)收集,版權(quán)歸原網(wǎng)站所有!
2、本站收錄的內(nèi)容若侵害到您的利益,請(qǐng)聯(lián)系我們進(jìn)行刪除處理!
3、本站不接受違法信息,如您發(fā)現(xiàn)違法內(nèi)容,請(qǐng)聯(lián)系我們進(jìn)行舉報(bào)處理!
4、本文地址:http://www.lmxpnzry.com/article/d509c4ff877b060c4cf7.html,復(fù)制請(qǐng)保留版權(quán)鏈接!
歡迎來到我們的沉浸式體驗(yàn),在這里,您將感受到美輪美奐的景色,享受與眾不同的視覺盛宴,體驗(yàn)前所未有的心靈震撼,我們的場景素材經(jīng)過精心挑選,旨在打造身臨其境的沉浸式體驗(yàn),當(dāng)您置身于這些令人驚嘆的風(fēng)景之中時(shí),您會(huì)感覺自己仿佛真的置身于其中,親身體驗(yàn)大自然的壯麗與震撼,無論是郁郁蔥蔥的森林、連綿起伏的山脈,還是波光粼粼的湖泊,我們都為您提供了...。
互聯(lián)網(wǎng)資訊 2024-09-30 20:01:00
概述LoadLibrary是一個(gè)WindowsAPI函數(shù),用于動(dòng)態(tài)加載DLL,動(dòng)態(tài)鏈接庫,它是一個(gè)非常重要的函數(shù),用于在程序中加載和使用其他DLL的代碼和資源,有時(shí)LoadLibrary會(huì)失敗,并顯示錯(cuò)誤消息LoadLibrary失敗,錯(cuò)誤87,參數(shù)錯(cuò)誤,本文將提供一個(gè)全面的指南,幫助你故障排除和解決這些錯(cuò)誤,可能的錯(cuò)誤原因Load...。
最新資訊 2024-09-24 13:30:48
在HTML中,標(biāo)簽用于為表單控件提供信息和上下文,標(biāo)簽可以是文本、圖像或其他元素,并放置在表單控件旁邊或上方,標(biāo)簽有以下幾個(gè)作用,標(biāo)識(shí)控件,標(biāo)簽為用戶標(biāo)識(shí)表單控件的用途和目的,提供說明,標(biāo)簽可以提供有關(guān)控件如何使用或需要輸入什么類型的輸入的說明,關(guān)聯(lián)控件,標(biāo)簽通過其for屬性與表單控件相關(guān)聯(lián),以便屏幕閱讀器和其他輔助技術(shù)可以將標(biāo)簽與適...。
最新資訊 2024-09-15 22:37:24
和創(chuàng)造力的原則,您可以創(chuàng)建既實(shí)用又引人入勝的鼠標(biāo)樣式,無論你是希望提高用戶體驗(yàn)、建立品牌形象,還是激發(fā)創(chuàng)造力,鼠標(biāo)樣式都可以幫助你實(shí)現(xiàn)目標(biāo),...。
互聯(lián)網(wǎng)資訊 2024-09-13 22:26:35
歡迎來到C語言編程奧秘的探索之旅!譚浩強(qiáng)C語言第三版簡介譚浩強(qiáng)C語言第三版是一本廣受好評(píng)的C語言教材,以其清晰的講解、豐富的例題和習(xí)題而聞名,它已被國內(nèi)許多大學(xué)和培訓(xùn)機(jī)構(gòu)采用,深受學(xué)生和程序員的喜愛,揭秘譚浩強(qiáng)C語言第三版中的原理在譚浩強(qiáng)C語言第三版中,作者以深入淺出的方式闡述了C語言的底層原理,包括,編譯器的工作原理數(shù)據(jù)類型和存儲(chǔ)方...。
本站公告 2024-09-11 16:56:54
body,font,family,Arial,Helvetica,sans,serif,h1,font,size,2em,font,weight,bold,text,align,center,h2,font,size,1.5em,font,weight,bold,p,font,size,1em,text,align,justif...。
最新資訊 2024-09-08 21:05:40
安居客是國內(nèi)領(lǐng)先的房地產(chǎn)信息平臺(tái),擁有龐大的用戶群體和詳細(xì)的房產(chǎn)數(shù)據(jù),通過解鎖安居客的源代碼,您可以獲得寶貴的信息和工具,構(gòu)建定制化的房地產(chǎn)解決方案,從而改善您的業(yè)務(wù)表現(xiàn),破解安居客獲取客戶信息通過安居客的源代碼,您可以獲取用戶提交的各種信息,包括,姓名聯(lián)系方式,電話、電子郵件,位置房產(chǎn)搜索偏好購房或租賃意向預(yù)算這些信息對(duì)于房地產(chǎn)業(yè)者...。
本站公告 2024-09-08 20:08:55
引言在當(dāng)今數(shù)字時(shí)代,為客戶提供卓越的服務(wù)至關(guān)重要,網(wǎng)絡(luò)公司源碼可以成為實(shí)現(xiàn)這一目標(biāo)的寶貴工具,因?yàn)樗梢院喕鞒滩⑻岣咝剩ㄟ^利用合適的軟件解決方案,企業(yè)可以響應(yīng)客戶的詢問,解決問題并建立牢固的關(guān)系,網(wǎng)絡(luò)公司源碼的好處自動(dòng)化任務(wù),網(wǎng)絡(luò)公司源碼可以自動(dòng)化重復(fù)性任務(wù),例如回復(fù)電子郵件、處理訂單和更新客戶記錄,這可以釋放員工的時(shí)間,讓他們...。
互聯(lián)網(wǎng)資訊 2024-09-06 09:09:33
簡介本指南將為您提供逐步指南,讓您能夠輕松下載JavaScript代碼并將其用于自己的項(xiàng)目,無論您是初學(xué)者還是經(jīng)驗(yàn)豐富的開發(fā)人員,本指南都將幫助您高效地獲取所需的代碼,第一步,確定您的需求在下載JavaScript代碼之前,需要確定您的需求,您需要一個(gè)框架、庫還是具體的函數(shù),了解您的需求將使您能夠縮小搜索范圍并找到最適合您項(xiàng)目的代碼,...。
互聯(lián)網(wǎng)資訊 2024-09-05 12:30:06
2008年5月12日,一場毀滅性的地震襲擊了四川汶川地區(qū),給這座城市留下了難以磨滅的傷痕,在廢墟中,除了悲傷和痛苦之外,還流傳著許多令人毛骨悚然的神秘事件,至今無法解釋,失蹤者之謎地震發(fā)生后,有數(shù)千人失蹤,其中許多人再也沒有找到,其中最令人不安的失蹤事件之一是關(guān)于一個(gè)名叫李明的男孩,李明當(dāng)時(shí)正在學(xué)校上課,地震發(fā)生時(shí),他被壓在倒塌的建筑...。
互聯(lián)網(wǎng)資訊 2024-09-04 01:50:08
引言安娜貝爾事件是一個(gè)廣為人知且備受爭議的鬧鬼事件,它因臭名昭著的安娜貝爾娃娃而聲名鵲起,這個(gè)案件一直是許多書籍、電影和紀(jì)錄片的主題,引起了公眾的廣泛猜測和爭論,本文將深入探討安娜貝爾事件,從其歷史起源到后續(xù)的爭議和調(diào)查,提供一個(gè)全面而客觀的調(diào)查,歷史起源1968年,唐娜·貝茲及其室友安吉·沃爾什獲得了一個(gè)穿著白色連衣裙的布娃娃作為生...。
互聯(lián)網(wǎng)資訊 2024-09-03 03:50:09
安陽靈異事件是中國近代史上著名的靈異事件之一,1983年,河南省安陽市發(fā)生了多起離奇事件,引發(fā)了全國轟動(dòng),這些事件包括,多地的靈異傳言、群眾的集體發(fā)燒、疑似目擊者失蹤和死亡等,事件經(jīng)過1983年4月,安陽市郊區(qū)開始流傳著一些離奇的傳言,人們說,當(dāng)?shù)赜幸粋€(gè)叫牛鬼的怪物,在夜間出沒,專門襲擊落單的行人,傳言迅速蔓延,引發(fā)了群眾的恐慌,與此...。
互聯(lián)網(wǎng)資訊 2024-09-03 02:08:12