Jekyll中无法遍历嵌套数组求助 - JSON数据文件
问题排查与修复方案
你的问题出在JSON结构和Liquid循环的匹配逻辑上,咱们一步步拆解清楚:
问题根源
看你的/_data/footer.json,links1是被[]包裹的数组类型,里面只包含了一个带items的对象:
"links1": [{ "title": "Useful Links", "items": [...] }]
但你的Liquid代码直接写了site.data.footer.links1.items——这相当于在数组本身上去找items属性,而数组是没有这个属性的,自然渲染不出任何内容。
修复方案
有两种可行的修复方式,你可以根据实际需求选择:
方式1:适配当前JSON结构(links1仅一组链接)
直接访问数组的第一个元素,再取它的items进行循环:
{% for item in site.data.footer.links1[0].items %} <li> <a href="{{ item.url }}">{{ item.title }}</a> </li> {% endfor %}
方式2:兼容未来多组链接的场景
如果以后links1可能会新增多个链接区块,可以先遍历整个links1数组,再处理每组里的items,灵活性更高:
{% for link_group in site.data.footer.links1 %} <!-- 可以先输出链接组的标题,比如 "Useful Links" --> <h3>{{ link_group.title }}</h3> <ul> {% for item in link_group.items %} <li> <a href="{{ item.url }}">{{ item.title }}</a> </li> {% endfor %} </ul> {% endfor %}
额外优化建议
如果你的links1本来就只需要一组链接,其实可以简化JSON结构——去掉links1外层的[],把它改成单个对象:
"links1": { "title": "Useful Links", "items": [ { "title": "Blog", "url": "#" }, { "title": "Blog", "url": "#" }, { "title": "Blog", "url": "#" }, { "title": "Blog", "url": "#" } ] }
这样你原来的Liquid代码就可以直接正常工作了,逻辑会更直观。
内容的提问来源于stack exchange,提问作者alwingeorge
相关产品推荐
相关产品推荐

