JSON物件的序列化和反序列化
阿新 • • 發佈:2018-11-28
方法:
序列化 JSON.stringify(json)
反序列化 JSON.parse(jsonStr)
API詳解:
JSON.stringify(json[, replacer [, space]])
- json, 即將被序列化的json物件
- replacer, 陣列或函式;陣列可用來指定僅序列化哪些指定的屬性;函式將在json每個屬性實現序列化時都進行呼叫,用作後續處理
- space, 數字或字串,用於美化輸出;數字表示每一級別縮排多少個空格;字串則使用該字串作為每一級的縮排
注意事項:
- 不可列舉的屬性會被忽略
- 值為undefined、函式、Symbol的屬性在物件序列化是會被忽略,陣列序列化時將被置為null
- symbol屬性會被忽略,即使replacer強制包含該屬性
詳細資訊參見:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
JSON.parse(jsonStr[, reviver])
- jsonStr,即將反序列化的json字串
- reviver,函式,在對每個屬性值反序列化生成值的時候會呼叫該函式
注意事項:
reviver
函式使用時需注意在解析到最頂層時,key為"",通常需要過濾掉該屬性進行值的後續處理- 遍歷順序為:層級優先,內層優先
- 不允許jsonStr中以,號結尾,例:"{a:1,}"
詳細資訊參見:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse