在 python 中更新 Json 值

新手上路,请多包涵

我正在尝试为我的 google 电子表格 api 指定一个名称。这是在“标题”键值中完成的。我尝试了以下但它为现有的 json 添加了一个新密钥。有没有办法到达 "title": "" 并使用 new_date 项目更新该值?

 prev_date =  datetime.date.today()-datetime.timedelta(1)
new_date = str(prev_date.isoformat())
res = {
  "requests": [
    {
      "addSheet": {
        "properties": {
          "title": ""
        }
      }
    }
  ]
}
res['title'] =  new_date
print (res)

这是输出:

 {'requests': [{'addSheet': {'properties': {'title': ''}}}], 'title': '2016-12-29'}

这就是我想要的:

 {'requests': [{'addSheet': {'properties': {'title': '2016-12-29'}}}]}

原文由 Franky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 457
2 个回答

从您提到的结构来看,您需要修改的 title 键比您提供的更嵌套。

您需要进行以下更改:

 prev_date =  datetime.date.today()-datetime.timedelta(1)
new_date = str(prev_date.isoformat())
res = {
  "requests": [
    {
      "addSheet": {
        "properties": {
          "title": ""
        }
      }
    }
  ]
}
res['requests'][0]['addSheet']['properties']['title'] =  new_date
print (res)

在哪里:

  • 'requests' 值为一个 list
  • 0 是列表中的第一项(也是唯一的一项)
  • 'addSheet' 是字典中的键,它是 0 索引中列表中项目的值
  • 'properties' 是上面字典中的key
  • 'title' 是上面字典中的key,根据你的要求需要的

原文由 Avihoo Mamka 发布,翻译遵循 CC BY-SA 3.0 许可协议

在尝试更新数组中的值时,您错误地为 JSON 对象编制了索引并在对象的根目录中添加了一个名为“title”的新键。在您的情况下,您应该访问 res['requests'][0]['addSheet']['properties']['title'] = new_date

原文由 TeaMonkie 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题