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