You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:40:39