一、在工作中遇到了一个问题——一个储存数据的JSON文本,如何依据接口的数据来实现数据的自我更新?
举例:
// 这个是真实的数据
const data = {
name: 'haha',
age: 6,
data: [12, 13, 14, 15]
}
// 这个是JSON的文本内容
{
"name":"name",
"age":"age",
"data":"data"
}
二、最后我也没找到JSON文本识别变量的可能,换用了另一种方式:把JSON改写成字符串,将字符串作为函数内部的代码来执行,识别函数的参数来匹配变量,最终将匹配的结果return。
代码如下:
let jsonStr = 'let option = {\n "name":data.name,\n "age":data.age,\n "data":data.data\n}' //将jsonStr改写成这样,如果在项目中使用,建议在全局环境下设置前缀,这里的前缀是"let option ="
const data = {
name: 'haha',
age: 6,
data: [12, 13, 14, 15]
}
function strMapping(string, data) {
string = string + '; return option;' // 匹配后的新option作为函数结果返回
return new Function('data', string)(data)//详见new Function文档
}
console.log(strMapping(jsonStr, data))
// 结果:{ name: 'haha', age: 6, data: [ 12, 13, 14, 15 ] }
这里还有个问题就是:怎么快速将JSON文件改写成想要的字符串代码?本人是刚好项目中用到了monaco编辑器,很方便地获取到字符串格式的值。但如果想要更加灵活地替换,建议自己写一个转换函数。