【问题标题】:Jsonify response data with backslash使用反斜杠 Jsonify 响应数据
【发布时间】: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?

标签: python json flask


【解决方案1】:

您可以将您的应用配置为使用带有app.json_encoder = CustomizedEncoder 的客户编码器

https://kite.com/python/docs/flask.app.Flask.json_encoder

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2012-12-09
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多