2015-12-30 3 views
0

Я делаю JSON с учетом набора страниц. Я хочу пропустить любые страницы без заголовков, а последний элемент не может иметь запятую после этого, это плохо JSON. Пробовал разные варианты, вот пример:Liquid + Jekyll, «если» не работает внутри цикла «для»

--- 
--- 
[ 
{% 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" 
} 

    , 



] 

Как избавиться от ведомой запятой? Заранее спасибо.

ответ

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 %} 

Edit: Вы должны также использовать jsonify фильтр, чтобы обеспечить надлежащее экранирование кавычек и других символов.

+0

Да, вы правы в последних итерациях цикла, подумал, что я обратился к этому в другом варианте, но я ошибся. Но введенный вами код не добавляет запятых. Позвольте мне попробовать и исправить .... – user3213137

+0

@ пользователь3213137 ваше право. По какой-то причине я решил добавить оператор присваивания в блок if, который (конечно) не работает. Я изменил это сейчас. – Nemo64

Смежные вопросы