Объект не является сериализуемым в формате JSON при использовании дампов JSON - PullRequest
0 голосов
/ 03 июня 2019

Я использую асинхронный метод для возврата массива объектов и получаю ошибку «TypeError: is not JSON serializable», и я не уверен, как ее исправить. Вот мой код:

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text

class NewStoriesHandler(tornado.web.RequestHandler):
    async def get(self):
        self.set_header("Access-Control-Allow-Origin", "*")
        response = requests.get(
        "https://hacker-news.firebaseio.com/v0/newstories.json?print=pretty")
        data = response.json()
        story_list = []
        async with aiohttp.ClientSession() as session:
           for url in data:
               story_list.append(fetch(session, url))

        print(story_list)
        self.write(json.dumps(story_list, default=json_util.default))
        self.finish()

Я пытался вернуть Джсона обратно к методу, но он не увенчался успехом, и я не уверен, что он ожидает обратно. Цикл возвращает объект для каждого вызова и добавляет его в массив.

1 Ответ

1 голос
/ 03 июня 2019

мне кажется, что вы добавляете сопрограммные объекты в список, а не результаты сопрограмм.

Я думаю, вы должны await каждый выбор, прежде чем добавлять их в список.Я не смог запустить код, потому что я в настоящее время путешествую, но вам, вероятно, также нужна стратегия, чтобы начать выполнение каждой задачи, прежде чем вы ее ожидаете.

...