原创

封装 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>
正文到此结束