我正在尝试在树枝上创建一个json对象,所以我需要在循环中设置一个变量。 经过多次尝试后我发现了这种方式,但是当我只有两条记录时,它就没问题了,如果我还有更多的记录产生问题:
{% set data = [] %}
{% for artist in artists %}
{% if loop.first %}
{%
set data = {
id : artist.id,
text : artist.name|capitalize() ~' '~ artist.surname|capitalize()
}
%}
{% else %}
{%
set data = [data,{
id : artist.id,
text : artist.name|capitalize() ~' '~ artist.surname|capitalize()
}]
%}
{% endif %}
{% endfor %}
{% set data = {results: data} %}
{{ data|json_encode|raw }}
我想要实现的目标是:
{results: [{id: 1, text: "bla"},{id: 2, text: "blabla"},{id: 3, text: "blablabla"}]}
相反,我得到:
{results:[[{id:1,text:"bla"},{id:2,text:"blabla"}],{id:3,text:"blablabla"}]}
有没有办法在树枝内部构建一个json对象而不会发疯?
我已经尝试过这种方式..但是重写对象并在变量中只保存最后一个元素:
{% set data = [] %}
{% for artist in artists %}
{%
set data = {
id : artist.id,
text : artist.name|capitalize() ~' '~ artist.surname|capitalize()
}
%}
{% endfor %}
{% set data = {results: data} %}
{{ data|json_encode|raw }}
答案 0 :(得分:1)
使用merge。
{% set data = [] %}
{% for artist in artists %}
{%
set data = data|merge ([{
id : artist.id,
text : artist.name|capitalize() ~' '~ artist.surname|capitalize()
}])
%}
{% endfor %}
{% set data = {results: data} %}
{{ data|json_encode|raw }}