html - jinja2.exceptions.UndefinedError - 试图达到特定值
问题描述
我正在尝试解析一个 JSON 对象,它是 -
{
"ticket": {
"ticket_id": "HGAS52GH98JK",
"ticket_status": 1,
"ticket_date": "Wed, 13 May 2020 20:40 PM",
"ticket_replied": false,
"ticket_reply_message": "None",
"ticket_issued_by": "65313696-d0a0-4019-8f89-e5e8ab01d6b7",
"ticket_issued_to": "1e76b45c-67cd-4100-ae43-d8adf85d4362"
},
"messages": [
{
"msg_ticket_id": "HGAS52GH98JK",
"msg_id": "2d4c0968-337b-4401-ad09-80e8890a5dce",
"msg_sender": "65313696-d0a0-4019-8f89-e5e8ab01d6b7",
"msg_date": "Wed, 13 May 2020 20:48 PM",
"msg": "test_msg1"
},
{
"msg_ticket_id": "HGAS52GH98JK",
"msg_id": "2d4c0968-337b-4401-ad09-80e88f0a7dce",
"msg_sender": "65313696-d0a0-4019-8f89-e5e8ab01d6b7",
"msg_date": "Wed, 13 May 2020 20:59 PM",
"msg": "test_msg3"
},
{
"msg_ticket_id": "HGAS52GH98JK",
"msg_id": "2d4c0968-337b-4401-ad05-80e8890a5dce",
"msg_sender": "65313696-d0a0-4019-8f89-e5e8ab01d6b7",
"msg_date": "Wed, 13 May 2020 20:49 PM",
"msg": "test_msg2"
}
]
}
首先,我需要进入“消息”,然后获取每条消息的 id 和其他值。为此,我使用 -
{% if ticket_data["messages"] %}
{% for msg in ticket_data["messages"] %}
{{ ticket_data['messages'][msg]['msg_id'] }}
{% endfor %}
{% endif %}
但我确实得到了一个错误jinja2.exceptions.UndefinedError: list object has no element {'msg_ticket_id': 'HGAS52GH98JK', 'msg_id': '2d4c0968-337b-4401-ad09-80e8890a5dce', 'msg_sender': '65313696-d0a0-4019-8f89-e5e8ab01d6b7', 'msg_date': 'Wed, 13 May 2020 20:48 PM', 'msg': 'test_msg1'}
我做错了什么?从中获得价值的正确方法是什么?我尝试{{ ticket_data['messages'][msg]['msg_id'] }}
在 for 循环中使用,然后我确实从消息中获取了一个 ID,但是 3 次,因为在 JSON 中定义了 3 条消息。
解决方案
我能够通过以下方式修复它:
{% if ticket_data["messages"] %}
{% for msg in ticket_data["messages"] %}
{{ msg['msg'] }}
{% endfor %}
{% endif %}
推荐阅读
- javascript - 从文件导入着色器时出现编译错误。三.js + Vue.js + WebPack
- asp.net-mvc - 如何在 WebApi 中为注销操作创建 URL
- java - 基于内容的textview动态渐变背景
- javascript - 触发事件兄弟继承javascript odontogram
- git - 从 Visual Studio 2017 将项目推送到 DevOps
- c++ - 考虑到每次遍历的路径都相同,如何在不使用邻接列表的情况下在 C++ 中实现有向图?
- python - 如何将列表列表中的所有数字变成整数
- sql - 我想从两个表中选择 [job_id]、[name]、[enabled] 和 [run_status] 列
- java - JScrollPane 上的 JTextArea 未出现在 JPanel 上
- python-jedi - jedi 解释器完成属性失败