将用户构建的 json 编码器传递到 Flask 的 jsonify
Posted
技术标签:
【中文标题】将用户构建的 json 编码器传递到 Flask 的 jsonify【英文标题】:Pass user built json encoder into Flask's jsonify 【发布时间】:2017-10-24 01:44:12 【问题描述】:我想将我写的一个 numpy JSON 序列化程序传递给 Flask 的 jsonify
函数,但我找不到这样做的方法。我不能使用json.dumps
,因为在处理错误消息时我必须设置 Flask 响应的 status_code。有没有办法将 JSON 序列化程序作为参数传入,类似于在 json.dumps
中使用 cls
参数,如下所示:Convert numpy type to python?
我的代码如下;谢谢。
import json
import numpy as np
from flask import Flask, jsonify
class JSON_Improved(json.JSONEncoder):
'''
Used to help jsonify numpy arrays or lists that contain numpy data types.
'''
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.floating):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(MyEncoder, self).default(obj)
app = Flask(__name__)
@app.errorhandler(ErrorMessage)
def handle_invalid_usage(error):
response = jsonify(error.to_dict())
response.status_code = error.status_code
return response
【问题讨论】:
【参考方案1】:您可以使用app.json_encoder = JSON_Improved
自定义 Flask 应用的 json 编码器。 JSON_Improved
继承自 flask.json.JSONEncoder
class JSON_Improved(JSONEncoder):
pass
https://web.archive.org/web/20190128005233/http://flask.pocoo.org/snippets/119 中有一个关于它的 Flask Snippets
【讨论】:
谢谢,很有用! sn-p 的链接已失效,因为所有 sn-ps 都已从烧瓶网站上删除。在他们的网站仓库上查看this issue。您可以通过web.archive.org/web/20190128005233/http://flask.pocoo.org/… 访问此 sn-p以上是关于将用户构建的 json 编码器传递到 Flask 的 jsonify的主要内容,如果未能解决你的问题,请参考以下文章
使用 AJAX 将 JSON 数据传递到 Flask 服务器? [复制]
通过 POST 将 JSON 编码的变量从 PHP 传递到 Javascript
将 JSON 编码的 PHP 变量传递给 HighCharts