我有一个休息服务,可以为我创建一些像这样的打字稿代码:
var parametrosUpdate = {
"compania": "this['variable_COMPANIA']",
"elemento": "this['variable_ELEMENTO']",
"serie": "this['variable_SERIE']"
};
但是,我有一个名为variable_COMPANIA的变量,我需要 解析json如下:
var variable_COMPANIA = 'value here';
var parametrosUpdate= {
"compania": this['variable_COMPANIA'],
"elemento": this['variable_ELEMENTO'],
"serie": this['variable_SERIE']
};
因此,基本上,我需要将json解析为对象文字,才能正确用作javascript变量。
我已经尝试过JSON.parse()函数,但对我而言不起作用。
答案 0 :(得分:1)
var parametrosUpdate = {
"compania": "this['variable_COMPANIA']",
"elemento": "this['variable_ELEMENTO']",
"serie": "this['variable_SERIE']"
};
var variable_COMPANIA = 'value here';
x = parametrosUpdate['compania']
// outputs: "this['variable_COMPANIA']"
eval(x)
// outputs: 'value here'
// if you want to transform the whole object into a new, parsed version, just do:
Object.assign(...Object.entries(parametrosUpdate).map(([k, v]) => ({[k]: eval(v)})))
我的胆量告诉我您真的不需要(或想要)这个。也许这是XY problem。您能为您要做的事情提供更多的背景信息吗?
答案 1 :(得分:0)
您可以使用以下方法:
String.ptototype.toLiteral = function () {
try {
return eval(this);
} catch(err) {
throw new Error('Incorrect javascript');
}
};
Object.keys(parametrosUpdate).map(x => parametrosUpdate[x] = parametrosUpdate[x].toLiteral());
或者只是:
Object.keys(parametrosUpdate).map(x => parametrosUpdate[x] = eval(parametrosUpdate[x]));