Liquid json 过滤器输出到 script 标签里报语法错误
现象#
把商品数据用 {{ product | json }} 塞进内联 script,控制台报 Unexpected token & 或引号错乱。
原因#
- 外层用了
| escape,把引号转成了 HTML 实体 - JSON 里含有
字符串,提前闭合了脚本标签 - 输出被放在双引号属性里,JSON 的双引号直接破坏属性
- 用了
json之后又接了strip_html等会改内容的过滤器
处理步骤#
- 内联数据用
<script type="application/json" id="product-data">{{ product | json }}</script>,再用 JS 读取并 parse - 必须内联到 JS 时用
{{ product | json | replace: '', '<\/' }}防闭合 - 去掉多余的
escape/strip_html - 需要传给 JS 的字段多时只挑必要字段构造对象,减小体积
验收标准#
浏览器控制台无语法错误,JSON.parse 能拿到完整对象,商品字段与后台一致。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。