Liquid映射报‘解析值后遇意外字符’错误,求排查原因
解决Liquid映射中含转义字符的JSON解析错误
嘿,这个问题我之前处理过!你遇到的报错完全是因为直接输出未转义的特殊字符导致JSON格式非法了,咱们一步步理清楚:
问题根源
你的输入里DisplayLastName__c的值是"é\" r",当你用Liquid直接把它塞进字符串引号里时,生成的内容会变成:
"DisplayLastName__c": "é" r",
JSON解析器读到第二个"的时候,会认为字段值已经结束了,后面的r就成了“意外字符”,自然抛出After parsing a value an unexpected character was encountered的错误。
解决方案
最稳妥的方式是用Liquid自带的json过滤器,它会自动处理所有JSON特殊字符(双引号、反斜杠、换行符等),帮你生成合法的JSON字符串:
修改后的Liquid代码:
{% if content.DisplayLastName__c %} "DisplayLastName__c": {{ content.DisplayLastName__c | json }}, {% endif %}
这个过滤器会把"é\" r"转换成标准的JSON字符串格式"é\" r",完美兼容解析器的要求。
如果你的环境限制不能用json过滤器,也可以手动针对双引号做转义(但这种方式只覆盖双引号,不如前者全面):
{% if content.DisplayLastName__c %} "DisplayLastName__c": "{{ content.DisplayLastName__c | replace: '"', '\\"' }}", {% endif %}
验证效果
用第一种方案处理你的输入后,生成的JSON片段会是:
"DisplayLastName__c": "é\" r"
这完全符合JSON语法规范,解析器就能正常处理,不会再报错啦。
内容的提问来源于stack exchange,提问作者David GROSPELIER
相关产品推荐
相关产品推荐

