n8n子工作流JSON节点无效JSON错误排查求助
n8n子工作流JSON节点无效JSON错误排查与解决方法
排查步骤
- 检查JSON节点的上游输入数据:查看子工作流中JSON节点接收的上游(比如Apollo Scraper)返回内容,是否存在非标准JSON格式问题——比如多余的尾逗号、未闭合的双引号、未转义的特殊字符(换行、制表符)。可以在n8n节点的执行历史里复制输入内容,用JSON校验工具验证合法性。
- 核对JSON节点的配置模式:确认节点是设为
从JSON字符串解析还是生成JSON。如果是前者,上游必须输出标准JSON字符串;如果是后者,检查配置的字段是否有语法错误(比如字段名未加引号、值类型不匹配)。 - 验证主-子工作流的数据传递:主工作流调用子工作流时,传递的参数可能携带破坏JSON结构的内容(比如HTML标签、未转义的&/<等符号),检查主工作流调用节点的输出item内容。
- 孤立测试子工作流:单独运行子工作流,模拟Apollo Scraper的返回数据输入到JSON节点,看是否仍报错。如果模拟数据正常,说明问题出在主工作流数据传递或Apollo Scraper的实际返回结果上。
解决方法
- 清洗上游非法数据:在JSON节点前添加
Function或Set节点,对数据进行预处理。比如用Function节点编写代码清理特殊字符、转义非法内容:const rawData = $input.first().json; // 去除换行并转义特殊字符 const cleanedJsonStr = JSON.stringify(rawData).replace(/[\n\t]/g, '').replace(/([\\"])/g, '\\$1'); return [{ json: { processedData: cleanedJsonStr } }]; - 修正JSON节点配置:根据上游数据类型切换节点模式——若上游是JS对象则用
生成JSON,若为字符串则用从JSON字符串解析;检查配置的字段是否完整闭合,无语法疏漏。 - 校验主工作流传递数据:在主工作流调用子工作流前,添加JSON校验逻辑(比如用Function节点执行
JSON.parse(JSON.stringify(data)),捕获解析错误),确保传递的是标准JSON结构。
内容的提问来源于stack exchange,提问作者Langdon Hatton
相关产品推荐
相关产品推荐

