【发布时间】:2017-04-12 20:14:45
【问题描述】:
我有以下JSON 文档,其结构如下:
{
"paciente": {
"id": 1234,
"nombre": "Pablo Andrés Agudelo Marenco",
"sesion": {
"id": 12345,
"juego": [
{
"nombre": "bonzo",
"nivel": [
{
"id": 1234,
"nombre": "caida libre",
"segmento": [
{
"id": 12345,
"nombre": "Hombro",
"movimiento": [
{
"id": 1234,
"nombre": "Flexion",
"metricas": [
{
"min": 12,
"max": 34,
"media": 23,
"moda": 20
}
]
},
{
"id": 12345,
"nombre": "Extensión",
"metricas": [
{
"min": 12,
"max": 34,
"media": 23,
"moda": 20
}
]
}
]
},
{
"id": 12345,
"nombre": "Escápula",
"movimiento": [
{
"id": 1234,
"nombre": "Protracción",
"metricas": [
{
"min": 12,
"max": 34,
"media": 23,
"moda": 20
}
]
},
{
"id": 12345,
"nombre": "Retracción",
"metricas": [
{
"min": 12,
"max": 34,
"media": 23,
"moda": 20
}
]
}
]
}
],
"___léeme___": "El array 'iteraciones' contiene las vitorias o derrotas con el tiempo en segundos de cada iteración",
"iteraciones": [
{
"victoria": true,
"tiempo": 120
},
{
"victoria": false,
"tiempo": 232
}
]
}
]
}
]
}
}
}
有时,segmento 数组
"paciente": ...
"sesion": ...
"juego": ...
**"segmento":[{"id": ...,"nombre":...},{"id": ...,"nombre":...},{"id": ...,"nombre":...}]**
有超过一个值,两个,三个,直到四个值,包括或不包括所有值。
我应该通过以下方式在 Django 模板中显示这些 segmento.nombre 值:
每个segmento.nombre 值我应该在我的模板中的一个标签html div 中显示它,例如:
如果在我的JSON 文档中我只将两个值读入segmento 数组...
{
"segmento": [{
"id": 12345,
"nombre": "Escapula",
}, {
"id": 12345,
"nombre": "Hombro",
}]
}
然后,我应该在模板中将这两个值显示为:
我阅读了 JSON 文档
<code> ...
with open('ProcessedMetrics.json') as data_file:
session_data=json.loads(data_file.read())
context['session_data'] = session_data
<code> ...
在我的模板中,我正在执行以下操作:
<!-- jugar con los ciclos del segmento, movimiento -->
<div class="box-body">
<!-- begin corporal segments tabs -->
<div class="nav-tabs-custom">
{% for nest1 in session_data.paciente.sesion.juego %}
{% for nest2 in nest1.items %} <!-- get all games (juego array)-->
{%for nest3 in nest2%}
<ul class="nav nav-tabs">
<li class="active">
<a href="#mano" data-toggle="tab" aria-expanded="true"><i class="fa fa-check-square">{{nest3}}</i>
</a></li>
{%endfor%}
{%endfor%}
{%endfor%}
<li><a href="#codo" data-toggle="tab" aria-expanded="false"><i class="fa fa-check-square"></i> other tab hardcoded</a></li>
</ul>
到目前为止我得到的结果是:
我在转发nivel 或segmento 数组时遇到问题...
我不知道如何以最佳方式访问嵌套元素
谁能给我指点一下,思路是根据segment数组的值个数生成标签
非常感谢您的支持
【问题讨论】:
-
你真的应该在Python中处理庞大的JSON结构,并尽可能保持模板中的代码简单。
-
从这个意义上说,将 JSON 转换为字典并将其发送到模板可能是一种选择吗?
-
您已经这样做了(json.loads 将 JSON 转换为字典)。我会创建一个 Python 函数,该函数接受该字典并返回最容易在模板中使用的确切格式,然后从视图中调用该函数。