以 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何以 JSON 格式返回 Glassdoor API

如何以json格式从类返回非空属性[重复]

以 XML/JSON 格式返回 Google Analytics Reporting API 结果

使用 Vue.js 以 JSON 格式返回列表的 API 的 AJAX 调用

管理从 web api 以 json 格式返回的属性名称

java - 如何在java中使用restful api以json格式返回404?