我有一个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无效。
答案 0 :(得分:0)
检查下面定义的setJSONNodeData函数。
function setJSONNodeData(root, path, newValue) {
try {
(new Function('root', 'root.' + path + '="' + newValue + '";'))(root);
} catch (e) {return "JSON Error";}
}
在您的代码中,两个返回都不需要,并且必须为newValue添加双引号。