js的序列化和反序列化
遇到的問題。打印的user得到的是序列化後的string對象
如果我想要得到裏面的id。必須先反序列化纔行
成功!
使用場景
1.向後臺傳遞參數、接收後臺返回值
如果後臺返回的是一個String(Object序列化後返回),那麼需要在js中使用eval或者parse等轉化爲Object再使用;
如果返回時傳遞了類型,比如就是Object,那麼直接使用就好
2.在頁面間傳遞數據,特別是數組時
需要使用序列化,否則IE會報錯:不能執行已經釋放Script的代碼
(1)序列化
即js中的Object轉化爲字符串
1.使用toJSONString
var last = obj.toJSONString(); //將JSON對象轉化爲JSON字符
2.使用stringify
var last = JSON.stringify(obj); //將JSON對象轉化爲JSON字符
(2)反序列化
即js中JSON字符串轉化爲Object
1.使用eval
var obj = eval("(" + data + ")");
爲什麼要eval這裏要添加"(" + data + ");//”呢?
原因在於:eval本身的問題。 由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。
2.使用parseJSON
var obj = data.parseJSON(); //由JSON字符串轉換爲JSON對象
3.使用parse
var obj = JSON.parse(data); //由JSON字符串轉換爲JSON對象
參考: