在Liquid中访问应用元字段的JSON值返回null,该如何解决?
问题
我添加了如下JSON格式的元字段:
{ "car": { "color": "Red" }, "train": { "color": "Blue" } }
已通过metafieldsSet mutation完成添加,但尝试用Liquid语法{{ app.metafields.namespace.key.car }}访问car属性时返回null,想问这种嵌套属性访问是否可行?如果可行,我哪里做错了?
解决思路
- 确认元字段类型:这是最常见的问题。如果创建元字段时没指定
json类型,Shopify会把它当成普通字符串存储,Liquid没法直接解析嵌套结构。- 正确做法:创建时在
metafieldsSet的type参数里设为json(比如"type": "json"),这样Shopify会自动解析JSON,你就能直接用{{ app.metafields.namespace.key.car.color }}访问值。 - 如果已经用了
string类型,补救方法是用Liquid过滤器先解析:{{ app.metafields.namespace.key | parse_json }}.car.color
- 正确做法:创建时在
- 核对命名空间和键名:
namespace和key必须和你创建元字段时的完全一致,大小写、拼写都不能错,Liquid对这些是敏感的。 - 检查元字段的归属对象路径:
app.metafields只对应特定范围的元字段,如果你的元字段是存在产品、店铺或其他对象上,路径要对应调整。比如产品元字段应该用{{ product.metafields.namespace.key.car }},店铺元字段用{{ shop.metafields.namespace.key.car }}。 - 先输出整个元字段排查:先直接输出
{{ app.metafields.namespace.key }},看返回的是解析后的对象还是原始JSON字符串。如果是字符串,说明类型不对;如果是对象但路径访问不到,再检查嵌套层级的拼写。
内容的提问来源于stack exchange,提问作者Abid Hasan
相关产品推荐
相关产品推荐

