通过yaml搜索java代码_如何在Jekyll中从YAML _data迭代和检索?

问题解决了!

经过一番长时间的考虑,我得到了一个非常简单的解决方案,基于两个步骤:从YAML更改为JSON,然后理解Jekyll返回Ruby Hash而不是数组 .

所以,最终文件 authors.json :

{

"andre": {

"name": "Andre Santos",

"site": "http://test.dev",

"email": "andre@test.dev"

},

"john": {

"name": "John Doe",

"site": "",

"email": "john.doe@test.dev"

}

}

现在该文件已更正,让我们来处理选择其中一个项目并显示它 .

{{ site.data.authors[post.author].name }}

如果 post.author = "andre" ,模板将返回 Andre Santos . 第一个问题,解决了!

现在,Jekyll非常愚蠢,但仍然无法正常使用JSON . 无论我们做什么,它都会用它来进行迭代 . 那么,让我们分析以下情况:

在测试中,我决定转储迭代 . 所以:

{% for author in site.data.author %}

{{ author }}

----

{% endfor %}

它产生以下结果:

andre{"name"=>"Andre Santos", "site"=>"test.dev";, "email"=>"andre@test.dev"} ----

john{"name"=>"John Doe", "site"=>nil, "email"=>"john.doe@test.dev"} ----

这个结果表明Jekyll并没有尝试将其作为哈希处理 . 如果我尝试打印 {{ author[0] ,它将显示 andre 和 john . 优秀!因此,哈希的下一部分(元数据)实际上是作者[1] .

显示信息的最终代码:

{% for author in site.data.authors %}

Username: {{ author[0] }}

Full Name: {{ author[1]["name"] }}

{% if author[1]["site"] != "" %}

Site: {{ author[1]["site"] }}

{% endif %}

E-Mail: {{ author[1]["email"] }}

-----

{% endfor %}

结果如下:

Username: andre

Full Name: Andre Santos

Site: http://test.dev

E-Mail: andre@test.dev

----

Username: john

Full Name: John Doe

E-Mail: john.doe@test.dev

----

塔达!

因此,要将其包装起来:删除YAML并使用JSON,使用简单的点表示法和键从JSON的特定部分获取信息 . 使用 for 时,将其作为哈希处理 . 代码变得有点难以处理,但至少它正如我想的那样工作 . 在未来,如果Jekyll更认真地对待JSON,它可能会让我们更容易迭代它 .

谢谢你们!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值