You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jinja模板中对动态长度JSON的嵌套value字段求和求助

问题描述

现有如下JSON响应,需要在Jinja模板中对所有value对象中的数值求和,但body数组长度不固定(有时2个元素,有时3个),此前固定索引的写法会报UndefinedError: list object has no element 2错误。

JSON响应示例:

{
    "body": [
        {
            "beg_time": 1689172769,
            "step_time": 3600,
            "value": [
                [3],
                [2.2],
                [1.2]
            ]
        },
        {
            "beg_time": 1689187169,
            "step_time": 3600,
            "value": [
                [0],
                [0],
                [0],
                [2.02],
                [2.6],
                [0],
                [0]
            ]
        },
        {
            "beg_time": 1689215969,
            "step_time": 3600,
            "value": [
                [0],
                [2.1],
                [0],
                [1.4],
                [0],
                [0],
                [0]
            ]
        }
    ],
    "status": "ok",
    "time_exec": 0.03644895553588867,
    "time_server": 1689257978
}

错误写法示例:

{{ value_json2.body.0.value | sum(attribute=0) | round(1) }} + {{ value_json2.body.1.value | sum(attribute=0) | round(1) }} + {{ value_json2.body.2.value | sum(attribute=0) | round(1) }}
解决方案

方法1:循环累加(直观易读)

通过遍历body数组的每个元素,逐个计算子数组数值之和后累加,彻底避免固定索引的问题:

{% set total = 0 %}
{% for item in value_json2.body %}
    {% set sub_sum = item.value | sum(attribute=0) %}
    {% set total = total + sub_sum %}
{% endfor %}
{{ total | round(1) }}

方法2:过滤器链式调用(简洁高效)

利用Jinja的map和flatten过滤器提取所有目标数值,再一次性求和:

{{ (value_json2.body | map(attribute='value') | flatten(levels=1) | map(attribute=0)) | sum | round(1) }}

逻辑说明

  • map(attribute='value'):从body的每个元素中提取value数组
  • flatten(levels=1):把嵌套的二维数组(如[[3],[2.2]])转为一维数组[3,2.2]
  • map(attribute=0):确保提取每个子数组中的唯一数值(因为你的value元素都是单元素数组)
  • sum:对所有提取出的数值求和,最后用round(1)保留一位小数

内容的提问来源于stack exchange,提问作者ttlucian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:32:50