Как загрузить данные из 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>

В результате у меня сгенерирован этот код:

<span>Tracks:</span>
<ul>
</ul>

tracks.json выглядит так:

{
   "tracks":[
      {
         "id":"140",
         "title":"Android"
      },
      {
         "id":"142",
         "title":"GDG[x]"
      }
   ]
}

Использую ли я правильный способ доступа к полям JSON? Если нет, то каков правильный путь?

ОБНОВЛЕНИЕ: проблема была исправлена ​​в Jekyll v.2.1.0

12 голосов | спросил zasadnyy 1 J0000006Europe/Moscow 2014, 23:02:58

4 ответа


0

Вы можете превратить ваш элемент верхнего уровня в файл .json в такой массив:

[{
  "id":"140",
  "title":"Android"
},
{
  "id":"142",
  "title":"GDG[x]"
}]

Тогда вы можете получить к нему более простой доступ, как это {% for track in site.data.tracks %}.

ответил Terry Roe 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2016 19:20:17 +0300 2016, 19:20:17
0

Попробуйте site.data.tracks[0].tracks. Хорошо тебе провести время. ; -)

ответил Ourai Lin 29 PM000000120000003231 2014, 12:50:32
0

Я бы предложил разместить ваши данные в track.json следующим образом:

{
   "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 %}

Вывод останется таким же, как ожидалось:

<span>Tracks:</span>
<ul>
    <li>Title: Android</li>
    <li>Title: GDG[x]</li>
</ul>

Преимущество заключается в том, что вы можете в любое время обосновать этот файл JSON, не затрагивая данные.

ответил Chetabahana 7 Maypm18 2018, 19:21:14
0

Я действительно рекомендую вместо этого использовать yaml :). Он изначально поддерживается Jekyll (вы можете поместить его в _config.yml (затем вы можете использовать его на многих страницах) или в текстовый раздел YAML страницы (тогда он будет доступен для самой страницы). Когда вы помещаете его туда, данные анализируются Jekyll, и вы можете использовать его прямо оттуда.

Вы даже можете довольно легко конвертировать Json в Yaml: https://www.npmjs.org/package/json2yaml

И Yaml - довольно хороший формат, в некоторых отношениях даже лучше, чем JSON

ответил Jarek Potiuk 1 J0000006Europe/Moscow 2014, 23:13:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132