【问题标题】:Parse JSON body with escape characters with FLASK framework使用 FLASK 框架解析带有转义字符的 JSON 正文
【发布时间】:2019-09-09 09:47:24
【问题描述】:

我在 Flask 框架之上构建了一个 REST 服务。我有一条带有 JSON 正文的 POST 请求的路线。该路由将使用的请求将包含转义字符(\" 和 \t)。请求示例:

curl -k -X POST "http://127.0.0.1:8000/some" -H "Content-Type: application/json" -d "{\t\"name\": \"Alex\",\t\"age\": \"21\"}

您能帮我弄清楚如何正确解析带有转义字符的 JSON 正文吗?

我尝试使用 .json 方法提取 JSON 正文,但出现异常:“400 错误请求:浏览器(或代理)发送了此服务器无法理解的请求。”.

据我了解,.json 方法只能解析正文而无需转义字符,例如:

curl -k -X POST "http://127.0.0.1:8000/some" -H "Content-Type: application/json" -d "{"name":"Alex","age": "21"}

我当前使用 .json 方法的代码。

from flask import Flask, request

@app.route('/some', methods=['POST'])
def raise_request():
    content = request.json
    name = content["name"]
    surname = content["surneme"]
    print name 
    print surname
    return "Hello {} {}".format(name, surname), 200

【问题讨论】:

    标签: python-2.7 rest post flask


    【解决方案1】:

    尝试使用literal_eval 处理转义字符,然后在该结果上使用flask.json.loads

    from ast import literal_eval
    from flask import json
    
    @app.route('/some', methods=['POST'])
    def raise_request():
        content = request.get_data(as_text=True)
        content = literal_eval("'%s'" % content)
        content = json.loads(content)
        name = content["name"]
        age = content["age"]
        return "Hello {} {}".format(name, age)
    

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      相关资源
      最近更新 更多