烧瓶读取和浏览JSON

时间:2019-08-08 14:18:52

标签: python flask

我需要解析带有电影ID和标题的API,并通过Flask获取特定元素,但是它总是给我错误:

app = flask.Flask(__name__)
app.config["DEBUG"] = True


@app.route('/filmId/<filmid>', methods=['GET'])

def filmId(filmid): 
    retrieve_url = "http:www.exemple.url"
    response = requests.get(retrieve_url)
    retrieve_data = response.json()
    for d in retrieve_data:
        if filmid in d["videoId"]:
                return filmid
        else:
                return "An error occurred with id "+filmid
app.run()

这仅在我用API中的第一个id编译url时起作用,而给出第二个或第三个id则显示错误消息。我在做什么错了?

另一方面,我完全不了解如何使用Flask解析json:似乎通常的方式(data [“ key”])每次都会出错。

1 个答案:

答案 0 :(得分:1)

response.json()返回一个字典。请参阅详细信息键和字典的值。检查retrieve_data变量的值。

使用Flask解析JSON数据

由于我无权访问API端点,因此我展示了一个示例,该示例从API检索JSON数据,然后对其进行处理以向用户显示特定值。

我想向用户显示给定国家代码的国家名称。如果找不到国家名称,则会向用户显示错误消息。

  • 我将使用REST API来获取给定国家/地区代码的国家/地区详细信息。 API端点在最后一个路径中包含国家/地区代码。端点示例:https://restcountries.eu/rest/v2/alpha/bd
  • 我将从检索到的数据中搜索包含国家名称的密钥。
  • 如果在检索到的数据中找到一个国家/地区名称,我会将其显示给用户。否则,我将显示一条错误消息。

代码:

import requests
from flask import Flask, render_template, jsonify


app = Flask(__name__)

@app.route('/countries/<country_code>', methods=['GET'])
def get_country_information(country_code): 
    retrieve_url = "https://restcountries.eu/rest/v2/alpha/{}".format(country_code)
    response = requests.get(retrieve_url)
    data = response.json()
    found_country = False
    for key in data:
        if key == "name":
            found_country = True
            return data["name"]
    if not found_country:
        return "Country name is not found for country code {}".format(country_code)

输出:

有效的国家/地区代码:

valid country code

国家/地区代码无效

invalid country code