编辑Eval()'d JSON - Javascript

时间:2013-12-25 15:59:47

标签: javascript json parsing

采取以下对象。我正在尝试将字符串路径传递给“gold”,eval(),然后像这样递增:

var inv = {
    "gold" : 10
}

eval('inv.gold')++;
然而,它不起作用。我也尝试过使用JSON.parse,但它不起作用(无论是我写错了还是其他我不知道的东西)。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

eval()将评估或执行一个参数,因此你需要++内部:

eval('inv.gold++');

JSFiddle

答案 1 :(得分:0)

你可能不想在这里评估,而只是使用迭代器函数。例如:

function setProperty(object, chain, value) {
  if(typeof chain === "string") {
    chain = chain.split(".");
  }
  if(chain.length === 1) {
    object[chain[0]] = value;
  } else {
    setProperty(object, chain.slice(1), value);
  }
}

但真正的问题当然是为什么你需要根据一个完整的访问链设置值,因为这通常表明某些东西不太正确(在编写解析器之外)