2016-12-19 10 views
0

私はJekyllプロジェクトに取り組んでおり、_dataフォルダにtools.jsonがあります。 JSONファイルがそうのようにフォーマットされます。JekyllでJSON配列を並べ替え

{ 
"tools": [ 
    { 
     "title": "DER tool", 
     "url": "https://der.us/", 
     "sticky": "false" 
    }, 
    { 
     "title": "ZXY tool", 
     "url": "https://zxy.us/", 
     "sticky": "false" 
    }, 
    { 
     "title": "ABC tools", 
     "url": "https://abc.us/", 
     "sticky": "false" 
    }, 
    { 
     "title": "RSW tools", 
     "url": "https://rsw.us/", 
     "sticky": "true" 
    } 
]} 

私はアルファベット順に項目をソートしたいのですが、sticky: true場合には、一番上にする必要があります。あなたが個別に粘着性と非粘着性のアイテムを並べ替えることができます

<ul> 
<li>RSW tool</li> 
<li>ABC tool</li> 
<li>DER tool</li> 
<li>ZXY tool</li> 
</ul> 
+0

複数の付箋がありますか? – approxiblue

+0

はい、あります。 –

答えて

1

:理想的には、出力は次のようにする必要があります。余談として

{% assign sticky_tools = site.data.tools.tools | where: 'sticky', true | sort: 'title' %} 
{% assign tools = site.data.tools.tools | where: 'sticky', false | sort: 'title' %} 

<ul> 
    {% for t in sticky_tools %} 
    <li>{{ t.title }}</li> 
    {% endfor %} 

    {% for t in tools %} 
    <li>{{ t.title }}</li> 
    {% endfor %} 
</ul> 

あなたは(「ツール」キーwthout)ルートにだけ配列を含むtools.jsonを持っている場合、あなたはsite.data.toolsの代わりsite.data.tools.toolsとそれにアクセスすることができます。

+0

あなたは素晴らしいです!ありがとうございました! –

0

連続して並べ替えることができます。

{% assign sortedByTitleTools = site.data.tools.tools | sort: "title" | reverse %} 
{% assign sortedByStickyTools = sortedByTitleTools | sort: "sticky" | reverse %} 
<ul> 
{% for t in sortedByStickyTools %} 
    <li>{{ t.title }}</li> 
{% endfor %} 
</ul>