Отображение данных JSON stackOverflow API с помощью Flask - PullRequest
3 голосов
/ 28 марта 2012

Я пытался отобразить свое имя пользователя и репутацию из данных JSON, полученных из API StackOverflow.

Я использую модуль python Запрашивает , чтобы получить данные. Вот код

from flask import Flask,jsonify
import requests
import simplejson 
import json

app = Flask(__name__)

@app.route("/")
def home():
    uri = "https://api.stackexchange.com/2.0/users?   order=desc&sort=reputation&inname=fuchida&site=stackoverflow"
    try:
        uResponse = requests.get(uri)
    except requests.ConnectionError:
       return "Connection Error"  
    Jresponse = uResponse.text
    return Jresponse

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

Неиспользованный импорт - это то, что мне нужно, чтобы это сделать, но, похоже, я не знаю, как это сделать. Ниже приводится то, что возвращается в браузер, я хочу просто отобразить имя пользователя [display_name] и репутацию. какие варианты у меня есть, чтобы сделать это?

{ "элементы": [{ "user_id": 540028, "user_type": "зарегистрирован", "CREATION_DATE": 1292207782, "DISPLAY_NAME": "Fuchida", "profile_image": "http://www.gravatar.com/avatar/6842025a595825e2de75dfc3058f0bee?d=identicon&r=PG","reputation":13,"reputation_change_day":0,"reputation_change_week":0,"reputation_change_month":0,"reputation_change_quarter":0,"reputation_change_year":0,"age":24,"last_access_date":1332905685,"last_modified_date":1332302766,"is_employee":false,"link":"http://stackoverflow.com/users/540028/fuchida","website_url":"http://blog.Fuchida.me","location":"Minneapolis MN», "account_id": 258084, "badge_counts": { "золото": 0, "серебро": 0, "бронза": 3}}], "quota_remaining": 282, "quota_max": 300, "has_more" ложь}

1 Ответ

4 голосов
/ 28 марта 2012

Используйте json.loads () для чтения и декодирования данных.

from flask import Flask,jsonify
import requests
import simplejson 
import json

app = Flask(__name__)

@app.route("/")
def home():
    uri = "https://api.stackexchange.com/2.0/users?   order=desc&sort=reputation&inname=fuchida&site=stackoverflow"
    try:
        uResponse = requests.get(uri)
    except requests.ConnectionError:
       return "Connection Error"  
    Jresponse = uResponse.text
    data = json.loads(Jresponse)

    displayName = data['items'][0]['display_name']# <-- The display name
    reputation = data['items'][0]['reputation']# <-- The reputation

    return Jresponse

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