Как исправить TypeError('Object of type ExternalUnifiedEvent is not JSON serializable)?
Я получаю список объектов из внешнего API, который мне нужно отправить в качестве полезной нагрузки в веб-крючок, используя post request в python.
Структура данных, возвращаемых из 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')
Ваша функция get_data
возвращает объект ExternalUnifiedEvent
вместо списка или другого сериализуемого объекта JSON.
Вы должны исправить свою get_data
функцию или предоставить пользовательский JSONDecoder
методу dumps
в качестве cls
параметра:
json.dumps(payload, cls=YourCustomJSONEncoder)
Вы можете посмотреть, как сделать свой собственный класс кодировщика JSON в json python lib docs.