繁体   English   中英

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

[英]How to set a deeply nested JSON value?

对于下面的JSON,我想将项目添加/更新为“奖励”。 有什么办法可以直接放置变量{“ name”:“ ham”,“ bonus”:12}吗?

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

注意:我应该阐明“ JSON”是从JSON字符串构建的Python对象。

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

编辑或:

abilities [“ FGI”] [“ bonuss”]。push(..);

那会很有趣的! 实际上并没有一种简单的(内置)方法。 在markusf的回答中,他提到最后推动项目,但这只是问题的一半。 如果要确保其中不存在“火腿”物品,则必须使用以下函数遍历该物品:

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中的东西。 抱歉,您可以完全忽略我的答案,也可以翻译它,就像在js中一样。 哈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM