Javascript 如何将模板文本的结果保存到对象中?

Javascript 如何将模板文本的结果保存到对象中?,javascript,Javascript,我在json文件中有一些模板文本作为值。当我访问这些值时,我需要的是变量的值,而不是模板文本的字符串 我尝试过像这样添加回勾号(`),但没有成功: value = '`' + value + '`'; 下面是我试图运行的代码片段: const map = require('./mapping.json'); // declared here for testing const engagement_id = '000909000132'; const start_date = '08/08/

我在json文件中有一些模板文本作为值。当我访问这些值时,我需要的是变量的值,而不是模板文本的字符串

我尝试过像这样添加回勾号(`),但没有成功:

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()