Liquid + Jekyll,“除非”不在“for”循环中工作

时间:2015-12-30 00:11:41

标签: json for-loop jekyll liquid continue

我正在给一组页面制作JSON。我想跳过没有标题的任何页面,最后一个元素后面不能有逗号,这是糟糕的JSON。试过不同的变化,这是一个例子:

---
---
[
{% for page in site.pages %}
    {% unless page.title %}
        {% continue %}
    {% else %}
{
"title":"{{ page.title }}",
"content":"{{ page.content | strip_html | strip_newlines }}",
"href":"{{ page.url }}"
}
    {% endunless %}
    {% unless forloop.last %},{% endunless %}
{% endfor %}
]

生成的JSON文件的结尾如下所示:

{
"title":"Test Search",
"content":" ",
"href":"/search.html"
}

    ,



]

如何摆脱尾随的逗号?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你的问题是你的上一次循环迭代是没有标题的。

尝试添加逗号。这样你就不必在未来展望:

{% assign isFirst = true %}
{% for page in site.pages %}
    {% unless page.title %}{% continue %}{% endunless %}
    {% unless isFirst %},{% endunless %}
    {% assign isFirst = false %}
    {
    "title": {{ page.title | jsonify  }},
    "content": {{ page.content | strip_html | strip_newlines | jsonify  }},
    "href": {{ page.url | jsonify  }}
    }
{% endfor %}

修改:您还应该使用jsonify过滤器来确保正确转出引号和其他字符。