【问题标题】:Parsing with JSON for API [closed]使用 JSON 解析 API [关闭]
【发布时间】:2020-09-21 18:59:29
【问题描述】:

构建一个将 Pokemon 描述翻译成莎士比亚文本的 Pokemon API。 我想从 API 端点获取我的 Pokemon 名称:https://pokeapi.co/api/v2/pokemon?limit=151%27

目标:当我运行http://127.0.0.1:5000//api/v1/pokemon/all 时,我想在json 中显示我从口袋妖怪端点获得的信息。我觉得我已经很接近了,但我缺少一件事。

任何帮助将不胜感激

到目前为止的代码:

from flask import Flask, jsonify
from flask_restful import Resource, Api
import requests, json

app = Flask(__name__)
api = Api(app)

url = "https://pokeapi.co/api/v2/pokemon?limit=151%27"

payload = "{\n    \"name\": \"Julian\",\n    \"message\": \"Posting JSON data to Flask!\"\n}"
headers = {
  'Content-Type': 'text/plain',
  'Cookie': '__cfduid=d819fa7205412e277649e0ce70eb381211600699952'
}

response = requests.request("GET", url, headers=headers, data = payload)

@app.route('api/v1/pokemon/all')
def poke_names():
    to_parse =response.text.encode('utf8')
    requests.get(url, names=name)
    response_data = {name:"name", descrip:"description"}
    return jsonify(**response_data)


if __name__ == "__main__":
    app.run(debug=True) 

感谢您的帮助!

【问题讨论】:

  • response_data = {r} 是集合,不是字典
  • UTF8 和这个问题有什么关系?此页面为 UTF8。 Python 3 字符串是 UTF8。应该不需要解码任何东西
  • 所示代码无法触发此错误。您是否改变了问题的重点?
  • 道歉。已修改!
  • 您的问题是什么?代码会导致错误吗?它是否会产生意外的输出,如果是,那么预期的输出会是什么?

标签: json python-3.x api flask flask-restful


【解决方案1】:

也许我的例子会帮助你实现目标。

from flask import Response

@app.route('api/v1/pokemon/all')
def poke_names():
    url = "https://pokeapi.co/api/v2/pokemon?limit=151"
    response = requests.get(url)
    return Response(response.text, mimetype='application/json')

@app.route('api/v1/pokemon/all')
def poke_names():
    url = "https://pokeapi.co/api/v2/pokemon?limit=151"
    response = requests.get(url)
    data = response.json()
    return jsonify(data)

我可能不明白你的目标,你试图给出所有可能的名字。

@app.route('/api/v1/pokemon/all')
def poke_names():
    data = []
    url = "https://pokeapi.co/api/v2/pokemon?limit=151"
    while True:
        resp = requests.get(url)
        json = resp.json()
        data.extend(json.get('results', []))
        url = json.get('next')
        if not url: break
    return jsonify(data)

您应该考虑项目的实用性。目前看起来你只是在编写某种代理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多