有没有用于处理 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);

},

},

];


回答:

  1. 你这样做很危险呀,很容易被攻击
  2. 不记得见过这样的包,不过感觉深度遍历+函数构建就行了


回答:

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

回到顶部