Разобрать значения JSON как литералы объектов JavaScript - PullRequest
0 голосов

У меня есть служба отдыха, которая создает мне некоторый машинописный код, подобный этому:

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 (), но она мне не сработала.

Ответы [ 2 ]

1 голос
/ 20 мая 2019
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 проблема .Не могли бы вы дать немного больше информации о том, что вы пытаетесь сделать?

0 голосов
/ 20 мая 2019

Вы можете использовать следующий подход:

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]));
...