以 JSON 格式返回 API [重复]
Posted
技术标签:
【中文标题】以 JSON 格式返回 API [重复]【英文标题】:Return of API in JSON format [duplicate] 【发布时间】:2021-12-20 04:56:03 【问题描述】:以 JSON 格式返回 API
我正在 Flask 中创建一个 API,它返回找到的数据列表,我需要将此列表转换为 JSON 格式并将其返回以在 WindowsForm (C#) 应用程序中处理。返回数据时报错,搜索我使用jsonify()和json.dumps()找到了一些答案,但它不起作用。
def buscaIndicados(codigo):
query = f"SELECT idCliente, codIndicacao, dataVencimento, status FROM clientes WHERE codIndicado = 'codigo'"
conn = mysql.connector.connect(host=servidor,database=dataBase,user=usuario,password=senha)
cursor = conn.cursor()
cursor.execute(query)
row_headers = [x[0] for x in cursor.description]
resultado = cursor.fetchall()
cursor.close()
conn.close()
list_data = []
for result in resultado:
list_data.append(dict(zip(row_headers, result)))
return jsonify(result=list_data)
数据库返回:
['idCliente': 8, 'codIndicacao': 123456789, 'dataVencimento': '2021-12-01 00:00:00', 'status': 0, 'idCliente': 9, 'codIndicacao': 454121421, 'dataVencimento': '2021-11-25 00:00:00', 'status': 1]
错误:
"The view function did not return a valid response. The"
TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.
【问题讨论】:
首先看看你从数据库中得到了什么,zip(row_headers, result) 中有什么,然后如果你需要一个 JSON 字符串,那么 json.dumps(list_data) 就足够了跨度> 我把银行的return放在问题里,我也试过json.dumps(),也是报错。 请勿使用 f 字符串或其他类型的格式将数据放入查询中。这使您暴露于 SQL 注入。始终使用参数化语句。 干得好,现在检查 list_data 中的内容,jsonify(result=list_data) 中的内容,并向我们展示您是如何调用此函数的。 @Ellie 你睁开眼睛,我正在调用 searchIndicates() 函数并尝试执行返回到它的 C# 应用程序,在调用 searchIndicates() 函数的路由函数中我没有处理返回,我将 json.dumps() 放在路由函数中,一切都解决了。启动错误。谢谢。 【参考方案1】:您应该检查您从数据库中获取的内容、zip 中的内容(row_headers、result)等,然后如果您需要 JSON 字符串,那么 json.dumps(list_data)
就足够了。
【讨论】:
以上是关于以 JSON 格式返回 API [重复]的主要内容,如果未能解决你的问题,请参考以下文章
以 XML/JSON 格式返回 Google Analytics Reporting API 结果