如何在 Liquid 模板中处理 json 字典?

How to handle json dictionary in Liquid templates?

我对 Liquid 模板比较陌生,但我似乎没有找到一种方法来遍历 json 中的字典并访问不同的值。 免责声明:我正在为 VSCode.

使用 Shopify Liquid Preview 扩展

输入json文件:

输入文件包含两个属性:CustomerIdTransactions,即 'dictionary' 属性,包含 KeyValuePairs 列表。我想遍历 Transactions 集合并输出 TransactionValue 属性。

{
    "CustomerId": 13,
    "Transactions": {
        "1": {
            "Id": "1",
            "TransactionValue": 1000
        },
        "2": {
            "Id": "2",
            "TransactionValue": 207.47
        }
    }
}

预期输出:

<h1>Customer 13</h1>
<ul>
    <li>1000</li>
    <li>207.47</li>
</ul>

当前尝试

我可以很容易地循环集合,但是我不清楚如何访问当前事务的实际属性。 None 以下作品。当只是输出变量时,它被打印成这样: 1,[object Object]

<ul>
{% for trx in Transactions %}
    <li>{{trx}}</li>
    <li>{{trx.Key}}</li>
    <li>{{trx.Value}}</li>
    <li>{{trx.Object}}</li>
{% endfor %}
</ul>

我无法真正控制输入 json,所以我希望找到一个好的方法来完成这项工作。

谢谢

在大多数 Liquid 风格中,应该可以像这样按名称引用对象字段:

{{ Transactions["1"].TransactionValue }}

然后就是从某个地方获取所有已知的 transactionId。如果它们不能作为数组使用,那么肮脏的解决方案可能是解析原始传入 JSON,例如像那样:

{% assign transactionIds = Transactions | split: "\"Id\": \"" %}
<ul>
{% for id in transactionIds %}
    {% if id[0] != "{" %}
        {% assign realId = id | split: "\"" | first %}
        <li>
            {{ Transactions[realId].TransactionValue }}
        </li>
    {% endif %}
{% endfor %}
</ul>