source json:
{
"rss": {
"$": {
"version": "2.0",
"xmlns:metadata": "http://rss.rbc.ru/metadata",
"xmlns:rbc_news": "http://purl.org/rss/1.0/modules/content/",
"xmlns:wfw": "http://wellformedweb.org/CommentAPI/"
},
"channel": {
"item": [
{...},
{...},
{...},
{...},
{...}
]
}
}
}
Swig js模板,用于处理源json:
{%set root = rss.channel %}
{
"items":[
{% for item in root.item %}
{
"category":"{{item['metadata:category']}}",
"title":"{{ item.title }}"
}{% if item|last %},{% endif %}
{% endfor %}
]
}
我不知道如何选择最后一项。在输出中,似乎每个项都是rss.channel.item上下文中的最后一项和第一项。所以输出是: { "items":[
{
"category":"autonews",
"title":"sometitle1"
},
{
"category":"sport",
"title":"sometitle2"
},
{
"category":"realty",
"title":"sometitle3"
},...
是必须的,逗号只会出现在最后一项之后。我无法解决这个问题:
{% if item|last %},{% endif %}
Swig的文档说:
// my_arr = ['a', 'b', 'c']
{{ my_arr|last }}
// => c
所以我想知道是什么错了?
"|last"是一个过滤器,它使您更容易处理返回值。如果你想在最后一件东西进来的时候做某事,你应该使用"{% if循环。最后要做的%}件事{% endif %}"
请参阅http://paularmstrong.github.io/swig/docs/tags/