Python调用API并返回JSON响应的问题求助
解决方案
方法一:利用requests内置的json()方法
requests库已经封装了JSON响应解析逻辑,直接调用response.json()就能将响应转换成Python字典/列表,再传入jsonify即可正常返回JSON格式响应:
from flask import Flask, jsonify import requests app = Flask(__name__) @app.route('/github-timeline') def get_github_timeline(): response = requests.get('https://github.com/timeline.json') # 直接解析响应为Python可序列化对象 data = response.json() return jsonify(data) if __name__ == '__main__': app.run()
方法二:手动解码字节并解析JSON
如果必须使用response.content,需要先将字节数据解码为字符串,再用json.loads()转换成Python对象:
from flask import Flask, jsonify import requests import json app = Flask(__name__) @app.route('/github-timeline') def get_github_timeline(): response = requests.get('https://github.com/timeline.json') # 先解码字节为UTF-8字符串,再解析为Python对象 content_str = response.content.decode('utf-8') data = json.loads(content_str) return jsonify(data) if __name__ == '__main__': app.run()
问题原因说明
response.content返回的是字节类型数据,直接返回会输出原始字节流,不是标准JSON格式;jsonify仅支持序列化Python基础数据类型(字典、列表、字符串等),字节对象不在可序列化范围内,因此会抛出Object of type bytes is not JSON serializable错误。
内容的提问来源于stack exchange,提问作者Phuc
相关产品推荐
相关产品推荐

