Как исправить 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.

Вернуться на верх