我正在從外部 API 檢索物件串列,我需要使用 python 中的 post 請求將其作為有效負載發送到 webhook。
從回傳的資料結構get_data()如下所示
[{"eventId": 1,
"eventType": "test",
"properties": {
"property1": "value1",
"property2": "value2",
"property3": "value3",
}},
{"eventId": 2,
"eventType": "test",
"properties": {
"property1": "value1",
"property2": "value2",
"property3": "value3",
}},
{"eventId": 3,
"eventType": "test",
"properties": {
"property1": "value1",
"property2": "value2",
"property3": "value3",
}}]
headers = {"Content-Type": "application/json",}
payload = get_data()
response = requests.post(webhook_url, headers=headers, data=json.dumps(payload))
它提出了一個TypeError('Object of type ExternalUnifiedEvent is not JSON serializable); 如果我洗掉json.dumps()并只是將有效負載作為資料傳遞,我會得到TypeError('cannot unpack non-iterable ExternalUnifiedEvent object')
def get_data():
try:
api_response = client_api.get()
data = []
for i in api_reponse:
e = {
"event_id": i.event_id
"event_type": i.event_type
"properties": i.properties
}
data.append(e)
return data
except Exception as e:
print(e)
uj5u.com熱心網友回復:
您的get_data函式回傳一個ExternalUnifiedEvent物件而不是串列或另一個JSON 可序列化物件。您應該修復您的get_data函式或JSONDecoder為該dumps方法提供自定義作為cls引數:
json.dumps(payload, cls=YourCustomJSONEncoder)
您可以在json python lib docs中查看如何制作自定義 JSON 編碼器類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498365.html
下一篇:如何快速發出多表單資料發布請求?
