有没有用于处理 JSON 中的函数和正则表达式的通用 npm或函数?
问题
有没有比较通用的npm或工具函数替换JSON.parse和JSON.stringify处理对象中带有函数,正则
等
前端原数据
const forms = [ {
name: "aa",
age: 11,
call: function (val) {
console.log("val", val);
},
},
];
把json转成字符串存储进mysql
[{"name":"aa","age":11,"call":"function (val) { console.log(\"val\", val); }"}]
返回给前端的时候,把字符串再转回json,想到得如下数据
const forms = [ {
name: "aa",
age: 11,
call: function (val) {
console.log("val", val);
},
},
];
回答:
- 你这样做很危险呀,很容易被攻击
- 不记得见过这样的包,不过感觉深度遍历+函数构建就行了
回答:
AI给的答案,对象转字符串stringifyWithFunctionsAndRegex,字符串转对象parseWithFunctionsAndRegex
function customReplacer(key, value) { if (value instanceof RegExp) {
return `__REGEXP:${value.toString()}`;
} else if (typeof value === 'function') {
return `__FUNCTION:${value.toString()}`;
} else {
return value;
}
}
function stringifyWithFunctionsAndRegex(obj) {
return JSON.stringify(obj, customReplacer);
}
const obj = {
name: 'John',
age: 30,
regExp: /test/,
sayHello: function() {
console.log('Hello!');
}
};
const jsonString = stringifyWithFunctionsAndRegex(obj);
console.log(jsonString);
function customReviver(key, value) { if (typeof value === 'string' && value.startsWith('__REGEXP:')) {
const match = value.match(/__REGEXP:(.+)/);
return new RegExp(match[1]);
} else if (typeof value === 'string' && value.startsWith('__FUNCTION:')) {
const match = value.match(/__FUNCTION:(.+)/);
return eval(`(${match[1]})`);
} else {
return value;
}
}
function parseWithFunctionsAndRegex(jsonString) {
return JSON.parse(jsonString, customReviver);
}
const jsonString = '{"name":"John","age":30,"regExp":"__REGEXP:/test/","sayHello":"__FUNCTION:function () { console.log(\'Hello!\'); }"}';
const parsedObject = parseWithFunctionsAndRegex(jsonString);
console.log(parsedObject);
以上是 有没有用于处理 JSON 中的函数和正则表达式的通用 npm或函数? 的全部内容, 来源链接: utcz.com/p/935254.html