前言
有一个对象如{ formData: { name: '', phone: '' },regList: { phone: [{ pattern: "/^1(3|4|5|6|7|8|9)\d{9}$/", message: '手机号格式错误' }] }}用JSON.stringfit()转json字符串的时候发现转成了{ formData: { name: '', phone: '' },regList: { phone: [{ pattern: {}, message: '手机号格式错误' }] }}把正则转成了空对象,以至于用JSON.parse()时,发现把正则数据丢失了
原因
JSON.stringify会处理的几种类型: String, Number, Boolean, null, Array, Object
不会处理的几种类型: Date, RegExp, undefined, Function
解决方法
JSON.stringify()
/**
* json对象转json字符串
* @param { Object } json json对象
*/
export function stringifyJson(json){
return JSON.stringify(json, (k, v) => {
// 将正则对象转换为正则字符串
if(v instanceof RegExp){
return v.toString();
}
return v;
});
}
JSON.parse()
/**
* json字符串转json对象
* @param { String } jsonStr json字符串
*/
export function parseJson(jsonStr){
return JSON.parse(jsonStr, (k, v) => {
try{
// 将正则字符串转成正则对象
if (eval(v) instanceof RegExp) {
return eval(v);
}
}catch(e){ // nothing
}
return v;
});
}
转载于https://blog.csdn.net/weixin_46656983/article/details/107188175