【发布时间】:2020-04-03 18:20:32
【问题描述】:
我有一个烧瓶 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)
【问题讨论】:
-
您将结果两次转换为 json - 由
json.dumps和后来由jsonify,因此额外的转义。你只需要jsonify。 -
感谢 h4z3 的快速回复。无论如何要使用带有自定义编码器的 jsonify?