如何设置深层嵌套的JSON值?

时间:2011-03-10 16:05:39

标签: python json list dictionary

对于下面的JSON,我想将项目添加/更新为“奖金”。有没有办法可以直接输入变量{“name”:“ham”,“bonus”:12}?

{
    "abilities": {
        "FGI": {
            "score": 10,
            "mod": 1,
            "bonuses": [
                {
                    "name": "spam",
                    "bonus": 1 
                },
                {
                    "name": "eggs",
                    "bonus": 1 
                } 
            ] 
        } 
    }
} 

注意:我应该澄清“JSON”是一个用JSON字符串构建的Python对象。

2 个答案:

答案 0 :(得分:1)

abilities.FGI.bonuses.push({“name”:“ham”,“bonus”:12});

编辑或:

能力[ “FGI”] [ “奖金”]推(..);

答案 1 :(得分:0)

那将是一个有趣的!实际上并没有一种简单的(内置)方法。在马库斯夫的回答中,他提到最后推动项目,但这只是你问题的一半。如果你想确保那里还没有“ham”项,你必须使用这样的函数循环它:

function array_has_item_already(array, key, look_for_key_value) {
  for( var i = 0; i < array.length; i++) {
    if( typeof array[i][key] != 'undefined' && array[i][key] == look_for_key_value )
      return array[i];
  }
  return false;
}

你会这样称呼它,如果找不到该项,它将返回false:

array_has_item_already(abilities.FGI.bonuses, "name", "ham");

我会留给你推出功能,让它更新或推送或其他什么。玩得开心!

<强>更新

我刚刚意识到你正在寻找python中的东西。 Welp,你可以完全忽略我的答案,或翻译它,因为它在js中。 HA。