【发布时间】:2021-05-22 11:57:05
【问题描述】:
我正在尝试通过烧瓶 API 查询托管在 Azure 上的 SQL Server 数据库并将结果转换为 JSON,我正在尝试如下。这是有效的,但是结果是通过转义字符来实现的。数据中似乎没有任何明显的特殊字符。如果我使用 API 并执行带有参数的存储过程,则 json 将以我想要的格式通过。有关如何更改此内容以获得标准 json 格式的任何建议?
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('customer')
conn = pyodbc.connect(serverconnectionstring)
class Customer(Resource):
def get(self):
cursor = conn.cursor()
query = "SELECT * FROM [dbo].[testforjson]"
result = cursor.execute(query)
items = [dict(zip([key[0] for key in cursor.description], row)) for row in result]
jsonitems = json.dumps(items)
return jsonitems
api.add_resource(Customer, '/customer')
if __name__ == '__main__':
app.run()
example output:
"[{\"field1\": \"B2653\", \"field2\": \"ERLOP\"}, {\"field1\": \"C2653\", \"field2\": \"ERLOP\"}]
desired output:
[
{
"field1": "B2653",
"field2": "ERLOP"
},
{
"field1": "C2653",
"field2": "ERLOP"
}
]
【问题讨论】:
-
您是否尝试直接从
get方法返回items? -
我没有尝试过,看起来它有效!谢谢!
-
(快速解释:如果你返回一个对象,flask 将尝试返回一个 json 表示并设置 json 内容类型。如果你返回一个字符串,flask 不知道你的意图,并发送一个字符串内容类型。然后由您的客户确定意图是什么。在大多数情况下,字符串内容类型意味着结果以字符串形式呈现给您。但您也可以忽略内容类型并将该字符串解析为 json )
-
感谢您的补充,它有很大帮助。
-
嗨@khennenf,现在错误解决了吗?
标签: python json api azure-sql-database