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