我有下面的Python代码
from flask import Flask, jsonify, json
app = Flask(__name__)
with open('C:/test.json', encoding="latin-1") as f:
dataset = json.loads(f.read())
@app.route('/api/PDL/<string:dataset_identifier>', methods=['GET'])
def get_task(dataset_identifier):
global dataset
dataset = [dataset for dataset in dataset if dataset['identifier'] == dataset_identifier]
if len(task) == 0:
abort(404)
return jsonify({'dataset': dataset})
if __name__ == '__main__':
app.run(debug=True)
在测试.json看起来像这样:
^{pr2}$当我像这样在URL中传递变量时:http://127.0.0.1:5000/api/PDL/1403
我得到以下错误:TypeError: string indices must be integers
知道“identifier”字段是一个字符串,我将在URL中传递以下内容:
http://127.0.0.1:5000/api/PDL/"US-XYZ-ABC-36"
http://127.0.0.1:5000/api/PDL/US-XYZ-ABC-36
我一直收到以下错误:
TypeError: string indices must be integers
你知道我遗漏了什么吗?我是Python新手!在
问题是您试图迭代字典而不是其中的数据源列表。因此,您将遍历字典的键,这些键是字符串。如果你用上面提到的变量的名字,或者你会用同样的名字。在
这对我很有效:
现在的问题是,在列表理解中的迭代期间,第一次迭代将名称},而是你当前正在迭代的
dataset
从dict
的意思改为dict
的键(dict
s迭代它们的键)。所以当你试图用dataset['identifier']
在dataset
中查找一个值,dataset
不再是{str
键。在停止重复使用同一个名字来表达不同的意思。在
从您发布的JSON中,您可能想要的是:
相关问题 更多 >
编程相关推荐