json - 如何处理 Liquid 模板中的 json 字典?
问题描述
我对 Liquid 模板相当陌生,但我似乎没有找到一种方法来遍历 json 中的字典并访问不同的值。免责声明:我正在使用适用于 VSCode 的 Shopify Liquid Preview 扩展。
输入json文件:
输入文件包含两个属性:CustomerId
和Transactions
,它是“字典”属性,包含 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>
当前尝试
我可以轻松地循环集合,但是我不清楚如何访问当前事务的实际属性。以下都不起作用。当只是输出变量时,它会像这样打印: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 }}
然后是从某个地方获取所有已知的 transactionIds 的问题。如果它们不能作为数组使用,那么肮脏的解决方案可能是解析原始传入的 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>
推荐阅读
- c# - 如何将 Microsoft.AspNetCore.Mvc.Core 版本从 2.1.16 降级到 2.1.11
- mysql - 加入表格、按日期查询、汇总字段和分组依据
- db2 - 如何从 Db2 中的分隔字符串中提取值
- python - 如何在 tkinter 中使用 Entry.get() 函数?
- tensorflow - 在不更改客户端代码的情况下使用 AWS Elastic Inference
- python - Css没有在Django中加载
- php - 是否可以在本地主机上使用 Instagram 基本显示 API?
- reactjs - Object 或 Boolean 如何在 Typescript 中声明类型
- null - express + express-graphql helloworld returns null
- c# - 部署的 azure 函数从 GraphApi Rest 调用收到错误请求,但操作成功