JSON第5行解析报错:预期STRING却得到undefined,引号正常如何排查
这个错误的本质是模板渲染完成后的最终JSON文本中,additional_tags数组内出现了未被双引号包裹的undefined字面量,JSON语法不支持直接识别该值,因此抛出解析错误。
常见触发原因
- 你遍历的
ticket.ccs本身为undefined,部分模板引擎遇到遍历对象为空/undefined时,会直接输出undefined文本,最终生成"additional_tags": [undefined]的非法结构 - 遍历过程中某条
cc对象不存在email属性,你所用的模板引擎没有将undefined值自动转换为空字符串,反而直接输出undefined字面量,导致JSON结构异常
解决方法
- 优先打印模板渲染完成后的完整JSON文本,确认第5行的实际输出内容,可快速定位具体是哪个变量没有正常渲染
- 临时修复可以给变量加兜底逻辑,确保永远遍历合法数组、值永远为字符串,修改后的代码如下:
{ "tickets": [ { "id": "{{ticket.id || ''}}", "additional_tags": [{% for cc in (ticket.ccs || []) %}"{{ cc.email || '' }}"{% if forloop.last == false %},{% endif %}{% endfor %}] } ] }
- 更推荐的方案是放弃手动拼接JSON数组的写法,直接使用内置的JSON序列化能力生成对应结构,不需要手动处理逗号分隔逻辑,完全避免语法问题(不同模板引擎语法可按需调整):
{ "tickets": [ { "id": "{{ticket.id || ''}}", "additional_tags": {{ JSON.stringify(Array.isArray(ticket.ccs) ? ticket.ccs.map(cc => cc.email || '') : []) }} } ] }
内容的提问来源于stack exchange,提问作者AtFirstYouTry
相关产品推荐
相关产品推荐

