Javascript 如何将模板文本的结果保存到对象中?
我在json文件中有一些模板文本作为值。当我访问这些值时,我需要的是变量的值,而不是模板文本的字符串 我尝试过像这样添加回勾号(`),但没有成功:Javascript 如何将模板文本的结果保存到对象中?,javascript,Javascript,我在json文件中有一些模板文本作为值。当我访问这些值时,我需要的是变量的值,而不是模板文本的字符串 我尝试过像这样添加回勾号(`),但没有成功: value = '`' + value + '`'; 下面是我试图运行的代码片段: const map = require('./mapping.json'); // declared here for testing const engagement_id = '000909000132'; const start_date = '08/08/
value = '`' + value + '`';
下面是我试图运行的代码片段:
const map = require('./mapping.json');
// declared here for testing
const engagement_id = '000909000132';
const start_date = '08/08/2011';
let obj = {};
for (let header in map) {
value = map[header].value;
// Do other things
obj[header] = value;
}
my mapping.json如下所示:
{
"C_ID": {
"value": "16520780,${engagement_id}"
},
"C_DATE": {
"value": "${start_date}",
"format": "mm/dd/yy",
},
"SURV_TYPE": {
"value": "S"
}
}
{ C_ID: '16520780,000909000132',
C_DATE: '08/08/2011',
SURV_TYPE: 'S' }
console.log(obj)为我提供了以下信息:
{ C_ID: '16520780,${engagement_id}',
C_DATE: '${start_date}',
SURV_TYPE: 'S' }
但我想要的是对象具有如下变量的实际值:
{
"C_ID": {
"value": "16520780,${engagement_id}"
},
"C_DATE": {
"value": "${start_date}",
"format": "mm/dd/yy",
},
"SURV_TYPE": {
"value": "S"
}
}
{ C_ID: '16520780,000909000132',
C_DATE: '08/08/2011',
SURV_TYPE: 'S' }
模板文本是JavaScript源代码的一部分 您不能将JavaScript源代码放在字符串中,然后直接使用它:它是数据,而不是代码 您可能会使用
eval()
,但这会带来问题和安全风险
改用模板库。例如
常量映射={
“C_ID”:{
“值”:“16520780,{{engagement_id}”
},
“C_日期”:{
“值”:“{start_date}}”,
“格式”:“年月日”,
},
“SURV_类型”:{
“值”:“S”
}
};
const engagement_id='000909000132';
施工开始日期='08/08/2011';
设obj={};
for(让标题在映射中){
const value=nunjucks.renderString(映射[header].value{
订婚登记,
开始日期
})
obj[标题]=值;
}
控制台日志(obj)代码>
模板文本是JavaScript源代码的一部分
您不能将JavaScript源代码放在字符串中,然后直接使用它:它是数据,而不是代码
您可能会使用eval()
,但这会带来问题和安全风险
改用模板库。例如
常量映射={
“C_ID”:{
“值”:“16520780,{{engagement_id}”
},
“C_日期”:{
“值”:“{start_date}}”,
“格式”:“年月日”,
},
“SURV_类型”:{
“值”:“S”
}
};
const engagement_id='000909000132';
施工开始日期='08/08/2011';
设obj={};
for(让标题在映射中){
const value=nunjucks.renderString(映射[header].value{
订婚登记,
开始日期
})
obj[标题]=值;
}
控制台日志(obj)代码>
您可以使用函数返回相应的值:
常量映射={
“C_ID”:{
“值”:“16520780,${engagement_id}”
},
“C_日期”:{
“值”:“${start_date}”,
“格式”:“年月日”,
},
“SURV_类型”:{
“值”:“S”
}
};
常量值={
业务约定书编号:“000909000132”,
开始日期:2011年8月8日,
};
const replacer=(u,p1)=>(值[p1]);
设obj={};
for(让标题在映射中){
value=map[header].value.replace(/\${.+}/,replace);
//做其他事情
obj[标题]=值;
}
控制台日志(obj)代码>您可以使用函数返回相应的值:
常量映射={
“C_ID”:{
“值”:“16520780,${engagement_id}”
},
“C_日期”:{
“值”:“${start_date}”,
“格式”:“年月日”,
},
“SURV_类型”:{
“值”:“S”
}
};
常量值={
业务约定书编号:“000909000132”,
开始日期:2011年8月8日,
};
const replacer=(u,p1)=>(值[p1]);
设obj={};
for(让标题在映射中){
value=map[header].value.replace(/\${.+}/,replace);
//做其他事情
obj[标题]=值;
}
控制台日志(obj)
是来自JSON.parse()
的结果吗?没有在任何地方使用JSON.parse(),JSON.parse()
的结果吗?没有在任何地方使用JSON.parse()