我有一个Flask API,它以json格式发送响应
rep = {'application_id': 32657, 'business_rules_id': 20} # a python dictionary
rep_json = json.dumps(rep, cls=CustomizedEncoder) # converts to a json format string
return jsonify(rep_json), 200 . #return the flask response (with headers etc)
我可以看到烧瓶响应主体数据,响应类似于:
b'"{\\"application_id\\": 32567, \\"business_rules_id\\": 20}"\n'
或在邮递员体内
"{\"application_id\": 32567, \"business_rules_id\": 20}
我应该以JSON格式(没有反斜杠)得到响应吗?我想原因是json.dumps将字符串转储到json一次,然后jsonify转储第二次,这导致双引号被转义。
我需要运行以下命令的原因是因为我需要一个自定义编码器,而jsonify可能不支持。
rep_json = json.dumps(rep, cls=CustomizedEncoder)
我的另一种解决方案是先转储然后加载,但这会使它显得多余。返回Flask响应时,是否有其他方法可以使用自定义编码器?
这是我尝试过的另一种方法,但是看起来很奇怪
rep = {'application_id': 32657, 'business_rules_id': 20} # a python dictionary
rep_json = json.dumps(rep, cls=CustomizedEncoder) # converts to a json format string
return jsonify(json.loads(rep_json)), 200 . #return the flask response (with headers etc)
答案 0 :(得分:2)
您可以将您的应用配置为使用app.json_encoder = CustomizedEncoder
的客户编码器