jsonSerialize.js 816 B

1234567891011121314151617181920212223
  1. // 自定义序列化方法:解决JSON.stringify方法忽略函数属性的问题
  2. export function customSerialize (obj) {
  3. // 将对象属性和函数转换为字符串形式
  4. const serializedObj = JSON.stringify(obj, function(key, value) {
  5. if (typeof value === 'function') {
  6. return value.toString() // 将函数转换为字符串
  7. }
  8. return value // 保持其他属性不变
  9. })
  10. return serializedObj
  11. }
  12. // 自定义反序列化方法
  13. export function customDeserialize(serializedObj){
  14. const parsedObject = JSON.parse(serializedObj, function(key, value) {
  15. if (typeof value === 'string' && value.indexOf('function') === 0) {
  16. // 将字符串还原为函数
  17. return new Function('return ' + value)()
  18. }
  19. return value // 保持其他属性不变
  20. })
  21. return parsedObject
  22. }