在探索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>
结果我生成了这段代码:
<span>Tracks:</span>
<ul>
</ul>
tracks.json
看起来像:
{
"tracks":[
{
"id":"140",
"title":"Android"
},
{
"id":"142",
"title":"GDG[x]"
}
]
}
我使用正确的方式访问JSON字段吗?如果没有,那么正确的方法是什么?
更新:问题已在Jekyll v.2.1.0
中修复答案 0 :(得分:5)
您可以将.json文件中的顶级元素设为如下数组:
@preference_set = FactoryGirl.create(:preference_set_with_preferences)
然后您可以更简单地访问它[{
"id":"140",
"title":"Android"
},
{
"id":"142",
"title":"GDG[x]"
}]
。
答案 1 :(得分:2)
site.data.tracks[0].tracks
尝试一下。玩的很开心。 ; - )
答案 2 :(得分:1)
我建议将您的数据放在draw_white_space": "all"
中,如下所示:
track.json
您可以根据需要添加other attributes并访问以下数据:
{
"atribut": "Jekyll site generation with JSON data",
"gallery":[
{
"group":"Tracks",
"items":[
{
"id":"140",
"title":"Android"
},
{
"id":"142",
"title":"GDG[x]"
}
]
}
]
}
输出将保持与预期相同:
{% for product in site.data.track.gallery %}
<span>{{ product.group }}:</span>
<ul>
{% for item in product.items %}
<li>Title: {{ item.title }}</li>
{% endfor %}
</ul>
{% endfor %}
好处是您可以随时自由地证明该JSON文件的合理性而不会干扰数据。
答案 3 :(得分:0)
我真的建议使用yaml代替:)。它本身由Jekyll支持(您可以将它放在_config.yml中(然后您可以在许多页面中使用它)或在页面的YAML Front事件中(然后它可用于页面本身)。当您将它放在那里时,数据被解析通过jekyll你可以直接从那里使用它。
您甚至可以轻松地将Json转换为Yaml: https://www.npmjs.org/package/json2yaml
Yaml格式非常好,在某些方面甚至比JSON更好