为了账号安全,请及时绑定邮箱和手机立即绑定

类型错误:{} 不是 JSON 可序列化的

类型错误:{} 不是 JSON 可序列化的

江户川乱折腾 2021-06-04 16:27:29
我正在尝试将 python dict 字符串写入(附加)到 Google Sheets下面是我的代码SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'SPREADSHEET_ID = 'XXX'RANGE_NAME = 'Sheet1!A2:F2'now = time.strftime('%d-%m-%Y %H:%M')def main():    store = file.Storage('token.json')    creds = store.get()    if not creds or creds.invalid:        flow = client.flow_from_clientsecrets('credentials.json', SCOPES)        creds = tools.run_flow(flow, store)    service = build('sheets', 'v4', http=creds.authorize(Http()))    request = service.spreadsheets().values().append(spreadsheetId= SPREADSHEET_ID,                                                 range= RANGE_NAME,                                                 valueInputOption='USER_ENTERED',                                                 insertDataOption='INSERT_ROWS',                                                 body= {now, data2['pagespeed_score'], data2['yslow_score'], Loadedtime, pagesize, data2['page_elements'],})    response = request.execute()    print(response)if __name__ == '__main__':    main()但我收到一个错误:"TypeError: {2.1982345581054688, '11-09-2018 13:08', 8.836, 109, 52, 55} is not JSON serializable"我认为这些值应该是 json 格式,但我的值是在 python 字典中。
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这里:

 body= {now, data2['pagespeed_score'], data2['yslow_score'], Loadedtime, pagesize, data2['page_elements'],}

您正在传递 a set,它在 JSON 中没有任何等效项。您必须检查预期类型的谷歌表 API 文档(可能dict实际上是)。


查看完整回答
反对 回复 2021-06-15
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

通过如下更改代码解决了它,将值集更改为 dict


values = [now, pagespeed, yslow, Loadedtime, pagesize, element]

body = {'values': [values]} 



result = service.spreadsheets().values().append(

    spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME,

    valueInputOption= 'USER_ENTERED', body=body).execute()


查看完整回答
反对 回复 2021-06-15
  • 2 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号