Liquid转换时如何保留JSON对象字面量不变并替换属性名称
解决方法
你当前模板输出为空的原因是Liquid不会自动将对象类型的transaction.Data序列化为JSON字符串,需要使用Liquid内置的json过滤器完成序列化,该过滤器会自动适配Data的任意内部结构,完全满足你的兼容需求。
修正后的完整模板如下:
[ {% for transaction in content %} { "MessageDetails": {{ transaction.Data | json }} }{% unless forloop.last %},{% endunless %} {% endfor %} ]
说明
json过滤器会自动把transaction.Data的内容转为合法JSON格式,不管内部是嵌套对象、数组、null还是其他类型,都可以正确输出,不需要手动适配结构变动- 增加了
{% unless forloop.last %},{% endunless %}逻辑,避免最后一个数组元素末尾多出逗号,保证最终输出是合法的JSON格式 - 不需要手动给
transaction.Data的输出加额外引号,json过滤器会自动处理所有引号、转义字符的格式问题 - 如果你使用的是不支持
json过滤器的老旧Liquid版本,可以手动递归遍历Data的属性生成结构,目前绝大多数生产环境的Liquid运行时(包括Shopify Liquid、DotLiquid、Azure APIM/Logic Apps Liquid等)都已内置该过滤器,可直接使用。
内容的提问来源于stack exchange,提问作者Chris Halcrow
相关产品推荐
相关产品推荐

