关于javascript:含有function的JSON对象转换字符串与反转

9次阅读

共计 770 个字符,预计需要花费 2 分钟才能阅读完成。

因为对象转为 JSON 时 JSON.stringify() 会把 function 过滤掉,那么咱们就把 function 转为字符串在去解决就可能达到要求了

const page={
  version: "8.0.0.0", showCount: 5, id: "newTab483617", name: "",
  a:function(){console.log(12321)}
}
// 对象转换为 json
const str=JSON.stringify(page,function(key,val){if (typeof val === 'function') {return val + '';}
  return val;
})
console.log(str)

json 转回对象的时候因为 function 都被解决成字符串了,那么咱们要把字符串转为 function, 这里咱们应用 eval 把字符串转成 function

const page={
  version: "8.0.0.0", showCount: 5, id: "newTab483617", name: "",
  a:function(){console.log(12321)}
}
// 对象转换为 json
const str=JSON.stringify(page,(key,val)=>{if (typeof val === 'function') {return val + '';}
  return val;
})
console.log(str)

// json 字符串转换成对象
var json = JSON.parse(str,(k,v)=>{if(v.indexOf && v.indexOf('function') > -1){return eval("(function(){return"+v+"})()")
  }
  return v;
})
console.log(json)
json.a()  // 打印 12321 胜利转回 
正文完
 0