在 JavaScript 中,JSON 序列化和反序列化分別是指將 JavaScript 對象轉換為 JSON 字符串(序列化),以及將 JSON 字符串解析為 JavaScript 對象(反序列化)。這可以使用內建的 JSON 對象輕鬆完成。
1. JSON 序列化:JSON.stringify()
語法
value:要序列化的 JavaScript 對象。replacer(可選):一個函數或數組,用於過濾對象屬性。space(可選):指定縮進的空格數量,用於格式化輸出的 JSON 字符串。
範例
使用 replacer 過濾屬性
2. JSON 反序列化:JSON.parse()
語法
text:要解析的 JSON 字符串。reviver(可選):一個函數,用於轉換解析的結果。
範例
使用 reviver 修改解析的值
reviver 函數接收兩個參數:key 和 value,可以用來轉換結果。
3. JSON 序列化與反序列化的實用範例
儲存和讀取數據
數據傳輸
序列化和反序列化經常用於網絡請求中:
- 序列化:將 JavaScript 對象轉換為 JSON 字符串,發送到伺服器。
- 反序列化:將伺服器返回的 JSON 字符串轉換為 JavaScript 對象。
注意事項
JSON 格式要求
- JSON 的鍵名必須是雙引號包裹的字符串。
- 僅支持基本類型:字符串、數字、布爾值、
null、數組和對象。 - 不支持函數、
undefined、Symbol 等。
循環引用問題
- 如果對象中存在循環引用,
JSON.stringify()會拋出錯誤:
- 如果對象中存在循環引用,
安全性
- 在解析不受信任的 JSON 字符串時,要防範惡意輸入。
總結
- 序列化:
JSON.stringify()將 JavaScript 對象轉換為 JSON 字符串。 - 反序列化:
JSON.parse()將 JSON 字符串轉換為 JavaScript 對象。
這些方法非常適合用於本地存儲、數據傳輸和動態處理數據。
沒有留言:
張貼留言