js序列化和反序列化的使用講解
(1)序列化
即js中的Object轉(zhuǎn)化為字符串
1.使用obj.toJSONString()
var str=obj.toJSONString(); //將JSON對象轉(zhuǎn)化為JSON字符
2.使用JSON.stringify(obj)
var str=JSON.stringify(obj); //將JSON對象轉(zhuǎn)化為JSON字符
(2)反序列化
即js中JSON字符串轉(zhuǎn)化為Object
1.使用eval('('+josnStr+')')
var obj=eval("("+data+")");
為什么要 eval這里要添加 "("+data+");//”呢?
原因在于:eval本身的問題。 由于json是以”{}”的方式來開始以及結(jié)束的,在JS中,它會被當(dāng)成一個語句塊來處理,所以必須強制性的將它轉(zhuǎn)換成一種表達(dá)式。
2.使用jsonStr.parseJSON()
var obj = jsonStr.parseJSON(); //由JSON字符串轉(zhuǎn)換為JSON對象
3.使用parse(jsonStr)
var obj = JSON.parse(data); //由JSON字符串轉(zhuǎn)換為JSON對象
(3)使用場景
1.向后臺傳遞參數(shù)、接收后臺返回值
如果后臺返回的是一個String(Object序列化后返回),那么需要在js中使用eval或者parse等轉(zhuǎn)化為Object再使用;
如果返回時傳遞了類型,比如就是Object,那么直接使用就好
2.在頁面間傳遞數(shù)據(jù),特別是數(shù)組時
需要使用序列化,否則IE會報錯:不能執(zhí)行已經(jīng)釋放Script的代碼
3.在進(jìn)行本地存儲時
存儲在本地window.localStorage.setItem(key,value)存儲的value是json序列化的字符串;獲取得到的window.localSorage.getItem(key)也是json序列化的字符串,需要經(jīng)過json的反序列化進(jìn)行使用(常見json序列化數(shù)組)
若有不足請多多指教!希望給您帶來幫助!
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
uniapp開發(fā)小程序?qū)崿F(xiàn)全局懸浮按鈕的代碼
這篇文章主要介紹了uniapp開發(fā)小程序如何實現(xiàn)全局懸浮按鈕,但是在uniapp中式?jīng)]有window對象,和dom元素的,需要獲取頁面上節(jié)點的幾何信息,具體實例代碼詳細(xì)跟隨小編一起看看吧2022-03-03
JS實現(xiàn)消息來時讓網(wǎng)頁標(biāo)題閃動效果的方法
這篇文章主要介紹了JS實現(xiàn)消息來時讓網(wǎng)頁標(biāo)題閃動效果的方法,實例分析了JavaScript基于時間函數(shù)動態(tài)操作頁面元素的技巧,并附帶了開心網(wǎng)的標(biāo)題閃動解決方案,需要的朋友可以參考下2016-04-04
B/S開發(fā)中常用javaScript技術(shù)與代碼
B/S開發(fā)中常用javaScript技術(shù)與代碼...2007-03-03
JavaScript設(shè)計模式之責(zé)任鏈模式實例分析
這篇文章主要介紹了JavaScript設(shè)計模式之責(zé)任鏈模式,結(jié)合實例形式分析了責(zé)任鏈模式的概念、原理及具體定義與使用技巧,需要的朋友可以參考下2019-01-01

