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

时间:2019-07-03 17:27:42

标签: python json flask flask-restful

我正在使用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。

1 个答案:

答案 0 :(得分:0)

这项工作可以吗?

return names_json["result"]