猿问

使用 Python3 和 jinja2 从嵌套 Json 响应中获取信息

我正在寻求使用 python 迭代一些 JSON 的帮助。


目前我有一个函数,它转到一个 JSON API 的 URL,获取 JSON 并将结果呈现到 results.html 中。在 results.html 中,我使用 jinja2 和 for 循环来获取一些信息。我可以获得的是来自 _id 和文本的信息,但是我想要做的是从用户部分获取信息(请参阅下面的 JSON 示例)。


Results.py


@app.route("/results/")

def results():

catfactsURl = "https://cat-fact.herokuapp.com/facts/"

webUrl = urllib.request.urlopen(catfactsURl)

if(webUrl.getcode() == 200):

    data = json.loads(webUrl.read())

    return render_template("results.html", data=data['all'], title="Results")

else:

    print("Received error, cannot parse results")

结果.html


{% extends 'layout.html' %}


{% block title %}{{title}}{% endblock %}


{% block content %}

<div>

   {% for datas in data %}

   <span>{{ datas['_id'] }}</span>

   <p>{{ datas['text'] }} </p>

   <p>{{ datas['user'] }}</p>

   {% endfor %}

</div>

{% 末端嵌段含量 %}


JSON 响应示例


"all": [

{

  "_id": "58e0088b0aac31001185ed09",

  "text": "The world's largest cat measured 48.5 inches long.",

  "type": "cat",

  "user": {

    "_id": "58e007480aac31001185ecef",

    "name": {

      "first": "Kasimir",

      "last": "Schulz"

    }

  },

  "upvotes": 7,

  "userUpvoted": null

},


慕尼黑的夜晚无繁华
浏览 178回答 1
1回答

料青山看我应如是

该数据源在其中一个条目 (58e008450aac31001185ecfd) 中缺少“用户”键。通过首先检查用户密钥是否存在来解决这个问题。<div>{% for datas in data %}&nbsp; &nbsp; <span>{{ datas['_id'] }}</span>&nbsp; &nbsp; <p>{{ datas['text'] }} </p>&nbsp; &nbsp; {% if 'user' in datas.keys() %}&nbsp; &nbsp; &nbsp; &nbsp; <p>{{ datas['user']['name']['first'] }} {{ datas['user']['name']['last'] }}</p>&nbsp; &nbsp; {% endif %}{% endfor %}</div>
随时随地看视频慕课网APP

相关分类

Python
我要回答