--- comment: \ because the for loop is being filtered by layout, the normal rindex0 check for the trailing comma doesn't work. Count the number of licenses and manually increment an index to see if we're on the true last iteration. --- {% assign count = 0 %}{% for page in site.pages %}{% if page.layout == "license" %}{% assign count = count | plus: 1 %}{% endif %}{% endfor %}{% assign i = 0 %} [ {% for page in site.pages %}{% if page.layout == "license" %} { "title": "{{ page.title }}", "permalink": "{{ page.permalink }}", "featured": {% if page.featured %}true{% else %}false{% endif %}, "description": "{{ page.description | replace: '"', '\"' }}", "how": "{{ page.how | replace: '"', '\"' }}", "rules": { {% for category in site.rules %} {% assign cat = category[0] %} "{{ cat }}": [ {% for rule in page[cat] %} "{{ rule }}"{% if forloop.rindex0 > 0 %},{% endif %} {% endfor %} ]{% if forloop.rindex0 > 0 %},{% endif %} {% endfor %} }{% assign i = i | plus: 1 %} }{% if i < count %},{% endif %} {% endif %}{% endfor %} ]