封装 JSON.stringify()、JSON.parse() 解决函数丢失问题
新建 json-util.js,内容如下:
// js 对象转换为 json 字符串
export const JSONStringify = (value) => {
return JSON.stringify(value,(key,val) => {
// 处理函数丢失问题
if (typeof val === 'function'){
return `${val}`
}
//
return val
})
}
// json 字符串转换为 js 对象
export const JSONParse = (value) => {
return JSON.parse(value,(key,val) => {
// 处理函数丢失问题
if (
typeof val === 'string'
&& val.indexOf
&& val.indexOf('function') === 0
){
let v
try {
v = eval(`(function(){return ${val}})()`)
}catch (error){
v = val
}
return v
}
//
return val
})
}
使用
<script>
import {JSONStringify,JSONParse} from "@/utils/json-util";
export default {
mounted() {
this.test()
},
methods: {
// 定义js对象
let obj = {
name: 'test',
fun: function(){
console.log('测试,方法执行了')
}
}
// js对象转为json字符串
let jsonString = JSONStringify(obj)
// json字符串转为js对象
let jsonObj = JSONParse(jsonString)
// 测试
jsonObj.fun()
}
}
</script>
正文到此结束