从json对象的最后一个对象中删除逗号

AHB

我使用 jinja2 创建了一个模板,它按预期生成输出。

但是,我试图从生成的 JSON 的最后一个对象中删除逗号。我尝试使用{% if loop.last %}去掉最后一个对象的逗号。

但是,我无法获得正确的输出。

{% if loop.last %}
    {
    "met" : {{j}},
    "uri" : "{{i}}"
     }
{% endif %}

下面是代码和输出

from jinja2 import Template

uri = ["example1.com","example2.com"]
metric_value = [1024, 2048]

template = Template('''\
[
{%- for i in uri -%}
    {%- for j in met %}
    {
        "met" : {{j}},
        "uri" : "{{i}}"
    },
    {%- endfor -%}
{%- endfor %}
]
''')

payload = template.render(uri=uri, met=metric_value)                                 
print(payload)

输出:

[
    {
        "met" : 1024,
        "uri" : "example1.com"
    },
    {
        "met" : 2048,
        "uri" : "example1.com"
    },
    {
        "met" : 1024,
        "uri" : "example2.com"
    },
    {
        "met" : 2048,
        "uri" : "example2.com"
    },
]
马丁·彼得斯

不要使用 Jinja2 手动生成 JSON您不能希望在所有情况下都生成保存且有效的 JSON。

在较大的模板中嵌入 JSON 时,请使用tojson内置过滤器生成 JSON。它不会包含尾随逗号。

我会用两个列表的乘积传入现成的字典:

uri_per_metric = [{'met': m, 'uri': u} for u in uri for m in metric_value]

并在模板中使用

{{ uri_per_metric|tojson(indent=4) }}

演示:

>>> from jinja2 import Template
>>> uri = ["example1.com", "example2.com"]
>>> metric_value = [1024, 2048]
>>> uri_per_metric = [{'met': m, 'uri': u} for u in uri for m in metric_value]
>>> template = Template('''\
... <script type="text/javascript">
... data = {{ uri_per_metric|tojson(indent=4) }};
... </script>
... ''')
>>> payload = template.render(uri_per_metric=uri_per_metric)
>>> print(payload)
<script type="text/javascript">
data = [
    {
        "met": 1024,
        "uri": "example1.com"
    },
    {
        "met": 2048,
        "uri": "example1.com"
    },
    {
        "met": 1024,
        "uri": "example2.com"
    },
    {
        "met": 2048,
        "uri": "example2.com"
    }
];
</script>

当然,如果你是生产一个application/json响应(返回从网络端点的JSON数据),这是不是一个更大的模板的一部分,然后用模板将是一个坏主意。在这种情况下,请使用您的 Web 框架可能具有的专用 JSON 支持,例如Flask 的jsonify()响应工厂方法,或json.dumps()直接生成输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从对象数组中删除最后一个对象。

在Java中删除ArrayList的最后一个对象

在json对象数组中添加重复记录并删除最后一个重复

最后一个对象字段JS末尾的逗号

删除JSON文件和PHP的最后一个逗号

在删除操作中,api始终会删除提供的任何用户名或密码的最后一个json对象?

从 JSON 数组中查找并删除一个 json 对象

如何删除选择查询中的最后一个逗号

如何删除标签列表中的最后一个逗号?

SQL从连接列中删除最后一个逗号

从字符串中删除最后一个逗号

删除模式中的最后一个逗号

从宏的参数中删除最后一个尾随逗号

从列中删除最后一个逗号

从最后一个数组值中删除逗号

删除标签小部件中的最后一个逗号

如何删除javascript中的最后一个逗号

如何从输出中删除最后一个逗号

添加字符并删除 JSON 文件中的最后一个逗号

如何使用Bash删除json文件中的最后一个逗号?

删除JSON输出列表中的最后一个逗号

用php从JSON字符串中删除最后一个逗号

从 Postgres 中 JSON 对象的最后一个对象中检索值

删除每行的最后一个逗号

从数组中删除特定对象会继续删除最后一个项目

使用另一个json对象从json对象中删除特定内容

从对象数组中删除所有但最后一个相似的键

过滤对象数组-删除字符串中的最后一个单词

用python删除字符串中的每个逗号,除了最后一个逗号