如何在Jekyll中从JSON加载数据

zas*_*nyy 13 json jekyll

在探索Jekyll进行网站生成时,我遇到了JSON数据加载问题.我已生成默认的Jekyll站点,将tracks.json文件添加到_data文件夹并将此代码添加到默认值index.html

<span>Tracks:</span>
<ul>
  {% for track in site.data.tracks.tracks %}
    <li>Title: {{ track.title }}</li>
  {% endfor %}    
</ul>
Run Code Online (Sandbox Code Playgroud)

结果我得到了这个代码:

<span>Tracks:</span>
<ul>
</ul>
Run Code Online (Sandbox Code Playgroud)

tracks.json 好像:

{
   "tracks":[
      {
         "id":"140",
         "title":"Android"
      },
      {
         "id":"142",
         "title":"GDG[x]"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我使用正确的方式访问JSON字段吗?如果没有,那么正确的方法是什么?

更新: 问题已在Jekyll v.2.1.0中修复

Ter*_*Roe 5

您可以将.json文件中的顶级元素设为如下数组:

[{
  "id":"140",
  "title":"Android"
},
{
  "id":"142",
  "title":"GDG[x]"
}]
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样更简单地访问它{% for track in site.data.tracks %}.


Jar*_*iuk 0

我真的建议使用 yaml 来代替:)。Jekyll 原生支持它(你可以把它放在 _config.yml 中(然后你可以在很多页面中使用它)或页面的 YAML Front Matter 中(然后它可供页面本身使用)。当你把它放在那里时,数据就会被解析by jekyll,您可以直接从那里使用它。

您甚至可以相当轻松地将 Json 转换为 Yaml: https: //www.npmjs.org/package/json2yaml

Yaml 是相当不错的格式,在某些方面甚至比 JSON 更好

  • 我愿意,但我们已经有为 Android 应用程序生成 JSON 文件的后端,我不想再引入一种格式 (2认同)