2016-12-30 65 views
-1

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

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'}}}]} 
+2

只需按照对嵌套字典的引用:'res ['requests'] [0] ['addSheet'] ['properties'] ['title'] = new_date'。 –

+0

非常感谢你@Martijn Pieters – Franky

+0

这与'json'有什么关系? –

回答

5

从你提到的结构来看,你需要修改的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'是字典中的关键字,它是中列表中项目的值指数
  • 'properties'在上述词典
  • 'title'关键是在上述dictonary的关键,和一个你需要根据您的要求
1

你是不正确索引你的JSON对象,并添加一个名为新钥匙title',而你试图更新数组内的值。在你的情况下,你应该访问res['requests'][0]['addSheet']['properties']['title'] = new_date

0

我现在意识到我可以直接通过我的变量在JSON。

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