使用 JSON 转储时对象不可 JSON 序列化
Object Is Not JSON Serializable When Using JSON Dumps
我正在对 return 对象数组使用异步方法,但出现 "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()
我尝试 return Json 返回到该方法,但没有成功,我不确定它期望返回什么。循环 return 每次调用一个对象并将其追加到数组中。
在我看来,您正在向列表中添加 co-routine 个对象,而不是协程的结果。
我认为您应该 await
每次提取,然后再将它们添加到列表中。我无法 运行 代码,因为我目前正在旅行,但您可能还需要一个策略来在等待每个任务之前开始执行它。
我正在对 return 对象数组使用异步方法,但出现 "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()
我尝试 return Json 返回到该方法,但没有成功,我不确定它期望返回什么。循环 return 每次调用一个对象并将其追加到数组中。
在我看来,您正在向列表中添加 co-routine 个对象,而不是协程的结果。
我认为您应该 await
每次提取,然后再将它们添加到列表中。我无法 运行 代码,因为我目前正在旅行,但您可能还需要一个策略来在等待每个任务之前开始执行它。