猿问

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

我正在尝试将 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 字典中。


江户川乱折腾
浏览 273回答 2
2回答

繁星淼淼

这里: body= {now, data2['pagespeed_score'], data2['yslow_score'], Loadedtime, pagesize, data2['page_elements'],}您正在传递 a set,它在 JSON 中没有任何等效项。您必须检查预期类型的谷歌表 API 文档(可能dict实际上是)。

人到中年有点甜

通过如下更改代码解决了它,将值集更改为 dictvalues = [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()
随时随地看视频慕课网APP

相关分类

Python
我要回答