json - 在 Jekyll _data 文件中寻址 JSON 对象的正确语法

标签 json jekyll liquid

我正在 Jekyll 中创建一个页面,并尝试使用存储在 Jekyll 的“_data”文件夹中的 JSON 文件中的数据。 JSON 文件是“/_data/objectsandproperties.json”,包含:

{ 
    "objectA": { "propertyA": "FooA", "propertyB": "BarA" },
    "objectB": { "propertyA": "FooB", "propertyB": "BarB" },
    "objectC": { "propertyA": "FooC", "propertyB": "BarC" }
}

我想输出一个格式如下的列表:

<dl>
    <dt>objectA</dt>
        <dd>propertyA: FooA</dd>
        <dd>propertyB: BarA</dd>
    <dt>objectB</dt>
        <dd>propertyA: FooB</dd>
        <dd>propertyB: BarB</dd>
    <dt>objectC</dt>
        <dd>propertyA: FooC</dd>
        <dd>propertyB: BarC</dd>
</dl>

我目前在我的 Markdown 文件中使用 Liquid 标签,如下所示:

{% for objects in site.data.objectsandproperties %}
<dl>
  {% for object in objects %}
  <dt>Object names: {{ object }}</dt>
      <dd>propertyA: {{ object.propertyA }}</dd>
      <dd>propertyB: {{ object.propertyB }}</dd>
  {% endfor %}
</dl>
{% endfor %}

这不起作用,因为对象不是“objectA”,而是具有属性等的整个 objectA 对象。

我无权访问创建 JSON 文件的脚本,因此我无法添加标签或使其成为数组等。我希望我可以让它与 Liquid 一起使用。

谢谢。

最佳答案

使用 inspect 过滤器更好地了解我们正在处理的内容:

{% for object in site.data.objectsandproperties %}

  {{ object | inspect }} 
  >> returns an array like :
  >> ["objectA", {"propertyA"=>"FooA", "propertyB"=>"BarA"}]

  name : {{ object.first }} or {{ object[0] }}
  properties : {{ object.last}} or {{ object[1] }}

{% endfor %}

您的代码可能如下所示:

<dl>
{% for object in site.data.objectsandproperties %}
  <dt>Object names: {{ object | first }}</dt>
  <dd>propertyA: {{ object.last.propertyA }}</dd>
  <dd>propertyB: {{ object.last.propertyB }}</dd>
{% endfor %}
</dl>

关于json - 在 Jekyll _data 文件中寻址 JSON 对象的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090567/

相关文章:

jekyll - 如何检查列表中是否存在值?

jekyll - 液体 for 循环可以在 Jekyll 中包含页面变量吗?

c++ - gSOAP 指定访问控制允许来源

php - 按 JSON 数组对 SQL 数据进行分组

php - json_encode 不工作 uft8 内容 php

css - Github 页面代码块离线和在线表现不同

python 值错误 : too many values to unpack in tuple

linux - Jekyll 安装,参数数量错误

ruby - Jekyll 忽略帖子中的 Liquid 标签

css - Webkit 不适用于 shopify liquid 吗?