7

我正在使用模板工具包来形成一个简单的 JSON 响应(参见下面的代码)。除了最后一个之外,我需要在响应的所有元素之后加上一个逗号。

我相信我需要使用 TTs 迭代器,但是我没有做对。
使用此代码,逗号仍会打印在最后一个元素的末尾。

问题在于包含的部分

[% UNLESS outer.last && loop.last %],[% END %]

这应该添加一个逗号,除非外部和内部循环在它们的最后一次迭代中。

非常感谢任何有关我出错的帮助。

{ "success": true, "filesdata": [
[%~ USE outer = iterator(objects); FOREACH object IN outer;
    FOREACH rep IN object.reps;
        IF rep.rep == reptype %]
{ "id":"[% object.id | xml %]", "url":"[% rep.src | xml %]", "story":"[% object.story | xml %]" }[% UNLESS outer.last && loop.last %],[% END %]
        [%~ END;
    END;
END ~%]
] }
4

2 回答 2

9

这对我有用:

[% IF loop.last %]}[% ELSE %]},[% END %]
于 2012-11-15T11:09:40.047 回答
6

您是否尝试过使用 join v 方法?您可以创建一个列表并用逗号加入它:

[% items.join(', ') %]

话虽如此,您可能还想查看Template::Plugin::SimpleJson。您可以创建一个哈希,然后将其传递给此插件。无论您决定这样做,您可能不想担心在实际模板文件中引用您的 JSON,并且使用类似的东西可以为您节省一些心痛。

还可以选择在模板本身之外创建 JSON,但这超出了您的问题范围。

于 2012-11-01T21:44:39.493 回答