为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑的夜晚无繁华 2023-10-11 20:00:06
我正在寻求使用 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},
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

该数据源在其中一个条目 (58e008450aac31001185ecfd) 中缺少“用户”键。通过首先检查用户密钥是否存在来解决这个问题。


<div>

{% for datas in data %}

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

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

    {% if 'user' in datas.keys() %}

        <p>{{ datas['user']['name']['first'] }} {{ datas['user']['name']['last'] }}</p>

    {% endif %}

{% endfor %}

</div>


查看完整回答
反对 回复 2023-10-11
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信