如何从 Python REST API 返回 JSON
Posted
技术标签:
【中文标题】如何从 Python REST API 返回 JSON【英文标题】:How to return JSON from Python REST API 【发布时间】:2017-03-01 04:50:09 【问题描述】:我有一个从 mysql 选择查询接收数据的 Python API。数据如下所示:
| val | type | status |
|-----|------|--------|
| 90 | 1 | a |
这些数据在 python 中得到了很好的接收。现在我想将该数据作为 JSON 呈现给我的 REST 客户端 - 如何?
这是我的python代码:
def somefunction(self, by, identifier):
# validate args
procedure = 'mysproc' + str(by)
try:
with self.connection.cursor() as cursor:
cursor.callproc(procedure,[str(identifier)])
self.connection.commit()
result = cursor.fetchone()
print("+++ Result: " + str(result) + " +++")
except:
result = "Request Failed"
raise
finally:
self.DestroyConnection()
return json.dumps(result)
这样,我的客户正在接收:
"[90, 1, "a"]"
问题:
有没有办法让我将它作为正确的 JSON 接收?喜欢:
'val': 90, 'type': 1 , : 'status': "a"
【问题讨论】:
您必须在客户端自己解析 json 字符串,例如,如果它是 python 客户端,请执行 json.loads。 通过调用json.loads(my_string)
来实现 json.dumps(my_obj)
的逆运算
>>> x=[90, 1, "a"] >>> d='val':x[0],'type':x[1],'status':x[2] >>> json.dumps(d) '"status": "a", "type": 1, "val": 90'
【参考方案1】:
您首先需要让 mysql 查询返回一个 dict 对象而不是一个列表。如果您的库是 MySQLdb,那么这个答案:Python - mysqlDB, sqlite result as dictionary 就是您所需要的。
这里是 MySQLdb 文档的链接:http://www.mikusa.com/python-mysql-docs/docs/MySQLdb.connections.html
我认为,如果您在创建游标时传入要使用的游标类,那么 fetchone 的结果将是一个字典。
with self.connection.cursor(MySQLdb.cursors.DictCursor) as cursor:
在字典上运行 json.dumps(result) 将给出您正在寻找的输出。
【讨论】:
以上是关于如何从 Python REST API 返回 JSON的主要内容,如果未能解决你的问题,请参考以下文章
Angular JS $http.get 从 WP REST API 返回空数据,但仅在实际 iOS 设备上
如何使用 Spring Boot 应用程序从 Rest API 返回 html
如何在 MobileFirst Foundation 8 中使用 REST API 从 Node.js 发送推送通知?