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