Python / Flask-如何在响应中返回有效的JSON而不是字符串? - python

我正在使用Flask Restful创建一个简单的API,该API在get Response中返回JSON。
我所有的方法都很好,我的问题是响应结果中的细节,因为JSON实际上是以字符串形式出现的,我不知道该怎么做。

当我用json.dumps()转换python dict时会发生问题

我尝试不使用json.dumps()方法来执行此操作,并且我的结果采用所需的格式,但不是实际的有效JSON。

这是我的代码:

class People(Resource):
def get(self):
    handle =  open("json_test.txt", "r")
    txt = handle.read()
    json  = self.names(txt)
    return jsonify({'result': json})

    def names(self, data):
        json.loads(data)
        print(data)
        ids = []
        names = []
        for n in data['people']:
            print(n)
            id = n['id']
            name = n['name']
            ids.append(id)
            names.append(name)

        test_list = []
        counter = 0
        for item in names:
            test_item = {"id": ids[counter], "name": names[counter]}
            test_list.append(test_item)
            counter = counter+1

        names_json = json.dumps(test_list, ensure_ascii=False)
        print(names_json)
        return names_json

这是我想要的输出:

{
  "result": {
    "people": [
      {
        "id": "12345",
        "nome": "Felipe"
      },
      {
        "id": "54321",
        "nome": "Jean"
      }
    ]
  }
}

但是我得到了这个实际输出:

{
result: "{"people": [{"id": "54321", "name": "Felipe"}, {"id": "12345", "name": "Jean"}]}"
}

即将到来:result =“ {json}”,一个字符串,而不是实际的json,但是双引号内的数据是有效的json。

参考方案

这行得通吗?

return names_json["result"]

Flask模板中的全局变量 - python

可能不是准确的标题,因为我是flask / python的新手。我正在开发一种内部工具,供不同团队使用。每个团队都有不同的部署阶段,例如alpha,beta|test,prod,并且它们还具有多个区域,例如NA,EU,AP等。现在,当我使用redirect_template时,我将发送stage和region作为变量,然后在模板中使用它们。但是,对每个red…

Flask-RESTful-返回自定义响应格式 - python

我已经按照以下Flask-RESTful文档定义了自定义响应格式。app = Flask(__name__) api = restful.Api(app) @api.representation('application/octet-stream') def binary(data, code, headers=None): resp =…

JSON SCHEMA PATTERN逗号分隔列表 - python

我的json模式中具有以下模式,并且我需要根据以下模式包含逗号分隔的值。当前模式只能像DV2一样处理一种模式所以我应该如何修改我的模式以包括多个字符串,如下所示,但它应该与声明的模式匹配。例如:“ DV2”,“ DEV1”,“ DEV3”,“ ST”, "ENVIRONMENT": { "type": "st…

Flask_SQLAlchemy无法像SQLAlchemy那样反映数据库 - python

我正在尝试使用python-Flask将Foreigner Database连接到Flask_SQLALchemy应用我到处都看过,包括FLASK_SQLALCHEMY official doc 过去4天里,我一直在Internet上到处寻找FLASK_SQLALCHEMY中没有ORM库的任何教程,但运气不佳我一直在查看SQLAlchemy Reflecti…

带后台线程的烧瓶应用程序 - python

我正在创建一个flask应用程序,对于一个请求,我需要运行一些长时间运行的作业,而无需在UI上等待。我将创建一个线程并将消息发送到UI。该线程将计算并更新数据库。但是,UI在提交后会看到一条消息。下面是我的实现,但是它正在运行线程,然后将输出发送到我不喜欢的UI。如何在后台运行此线程?@app.route('/someJob') def …