В настоящее время я использую Python библиотеку расписаний в приложении Flask и хочу вернуть jsonify-ответ на мой schedule.jobs. Schedule.jobs возвращает список всех заданий в моем расписании по умолчанию. Schedule.jobs возвращает список объектов класса (список schedule.Job объектов ).
Мне известно, что библиотека Flask JSON не позволяет вам озвучивать список. Я пробовал json dumps, но получил следующую ошибку: TypeError: Object of type Job is not JSON serializable
.
Как я могу вернуть jsonify-ответ моего списка объектов класса? Ниже приведен код:
import schedule
import time
>>> def geeks():
... print("Shaurya says Geeksforgeeks")
...
>>> def good_luck():
... print("Good luck!")
...
>>> def work():
... print("Study hard work harder")
...
>>> schedule.every(5).seconds.do(geeks)
Every 5 seconds do geeks() (last run: [never], next run: 2020-05-04 11:12:41)
>>> schedule.every(10).seconds.do(work)
Every 10 seconds do work() (last run: [never], next run: 2020-05-04 11:13:07)
>>> schedule.every(15).seconds.do(good_luck)
Every 15 seconds do good_luck() (last run: [never], next run: 2020-05-04 11:13:25)
>>> schedule.jobs
[Every 5 seconds do geeks() (last run: [never], next run: 2020-05-04 11:12:41), Every 10 seconds do work() (last run: [never], next run: 2020-05-04 11:13:07), Every 15 seconds do good_luck() (last run: [never], next run: 2020-05-04 11:13:25)]
>>> print(type(schedule.jobs))
<class 'list'>
>>> print(type(schedule.jobs[0]))
<class 'schedule.Job'>
>>> print(schedule.jobs[0])
Every 5 seconds do geeks() (last run: [never], next run: 2020-05-04 11:12:41)
>>> schedule_list = []
>>> for items in schedule.jobs:
... schedule_list.append(items)
...
>>> schedule_list
[Every 5 seconds do geeks() (last run: [never], next run: 2020-05-04 11:12:41), Every 10 seconds do work() (last run: [never], next run: 2020-05-04 11:13:07), Every 15 seconds do good_luck() (last run: [never], next run: 2020-05-04 11:13:25)]
>>> print(type(schedule_list[0]))
<class 'schedule.Job'>
>>> print(json.dumps(schedule_list))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/linda/opt/miniconda3/lib/python3.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/Users/linda/opt/miniconda3/lib/python3.7/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/Users/linda/opt/miniconda3/lib/python3.7/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/Users/linda/opt/miniconda3/lib/python3.7/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type Job is not JSON serializable