gpt4 book ai didi

flask - json在flask上对日期进行序列化restful

转载 作者:行者123 更新时间:2023-12-03 15:47:34 25 4
gpt4 key购买 nike

我有以下资源:

class Image(Resource):
def get(self, db_name, col_name, image_id):
col = mongo_client[db_name][col_name]
image = col.find_one({'_id':ObjectId(image_id)})
try:
image['_id'] = str(image['_id'])
except TypeError:
return {'image': 'notFound'}
return {'image':image}

链接到某个端点。

然而, image包含某些 datetime里面的物体。我可以用`json.dumps(..., default=str) 来包装它,但我看到有一种方法可以在flask-restful 上强制执行此操作。我不清楚到底需要做什么。

特别是,我读到:
    It is possible to configure how the default Flask-RESTful JSON
representation will format JSON by providing a RESTFUL_JSON
attribute on the application configuration.
This setting is a dictionary with keys that
correspond to the keyword arguments of json.dumps().

class MyConfig(object):
RESTFUL_JSON = {'separators': (', ', ': '),
'indent': 2,
'cls': MyCustomEncoder}

但我不清楚这到底需要放在哪里。尝试了几件事,但没有奏效。

编辑:

我终于解决了这个:

紧随其后
api = Api(app)

我补充说:
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime.datetime):
#return int(obj.strftime('%s'))
return str(obj)
elif isinstance(obj, datetime.date):
#return int(obj.strftime('%s'))
return str(obj)
return json.JSONEncoder.default(self, obj)


def custom_json_output(data, code, headers=None):
dumped = json.dumps(data, cls=CustomEncoder)
resp = make_response(dumped, code)
resp.headers.extend(headers or {})
return resp

api = Api(app)
api.representations.update({
'application/json': custom_json_output
})

最佳答案

刚刚清除了这一点,您只需要执行以下操作:

app = Flask(__name__)
api = Api(app)
app.config['RESTFUL_JSON'] = {'cls':MyCustomEncoder}

这适用于普通 Flask 和 Flask-RESTful。

笔记:
1)显然文档的以下部分不是很清楚:

It is possible to configure how the default Flask-RESTful JSON representation will format JSON by providing a RESTFUL_JSON attribute on the application configuration. This setting is a dictionary with keys that correspond to the keyword arguments of json.dumps().



class MyConfig(object):
RESTFUL_JSON = {'separators': (', ', ': '),
'indent': 2,
'cls': MyCustomEncoder}

2) 除了 'cls' 参数,您实际上可以覆盖 json.dumps 的任何关键字参数。功能。

关于flask - json在flask上对日期进行序列化restful,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41723252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com