Есть ли способ установить поле JSON с помощью новой функции? - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть метод get для получения данных из дерева JSON:

var tree = { user: [{ name: 'name1', email:'email1' }, {name: 'name2', email:'email2'}] };
getJSONNodeData(tree, 'user[1].name');
function getJSONNodeData(root, path) {
    try {
        return (new Function('root', 'return root.' + path + ';'))(root);
    } catch (e) {return "JSON Error";}
}

Я хотел бы установить данные JSON с использованием аналогичного простого метода. Я ожидал, что это сработает:

function setJSONNodeData(root, path, newValue) {
    return (new Function('root', 'return root.' + path + '=' + newValue +';'))(root);
}

Но это не работает? Почему и что будет? Get работает, а Set - нет.

1 Ответ

0 голосов
/ 01 ноября 2019

проверьте функцию setJSONNodeData, определенную ниже.

function setJSONNodeData(root, path, newValue) {
    try {
        (new Function('root', 'root.' + path + '="' + newValue + '";'))(root);
    } catch (e) {return "JSON Error";}
}

В вашем коде оба возврата не требуются, и вы должны добавить двойные кавычки для newValue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...