html
在 Coze 工作流中,典型表现为「条件判断」节点报错 Variable 'response.data' not found,或始终走默认分支;「文本生成」节点输出 {response.json.items[0].name} 字面量而非真实值;「HTTP 请求」后接「JSON 解析」却提示“输入非字符串”。此类问题不报红但逻辑断裂,常被误判为接口异常。
- ❌ 错误写法:
$response.body、response.json.items.0.name、{{response}}.data - ✅ 正确写法:
{{response.json.items[0].name}}、{{user_input.phone}}、{{json_parse(response.body).code}} - ⚠️ 注意:
{{ }}是唯一合法插值容器,内外不可嵌套空格,路径中数组索引必须用方括号[0](非点号.0)
当使用「条件分支」或「并行执行」时,分支内通过「设置变量」定义的 order_status 在合并后不可见。Coze 默认遵循“分支隔离”原则,需在每个分支出口处添加「设置变量」节点,将关键字段显式赋值至全局上下文:
final_result, value:
{{api_response.json.data}} 仅在分支内设
temp_data 后直接连入合并节点 并行分支汇总后 用「合并变量」节点聚合多路输出 依赖隐式变量继承
「HTTP 请求」节点输出结构为:{"json": {...}, "body": "{...}", "status_code": 200}。若直接用 {{response.body}} 参与数值比较(如 {{response.body.code}} > 200),实际比的是字符串首字符 ASCII 值。必须先解析:
{{json_parse(response.body).code}}
或对原始响应体做类型断言:{{is_number(json_parse(response.body).code) ? json_parse(response.body).code : 0}}
启用「调试模式」运行工作流,逐节点点击「查看日志」,重点关注:
- 「HTTP 请求」→ 查看
output.json和output.body的完整结构(注意是否含外层包装) - 「JSON 解析」→ 验证
output.parsed是否为 object/array - 用「调试信息」节点临时打印:
Path test: {{response.json?.items?.length}}
在关键节点后插入「设置变量」,强制命名并固化数据契约,例如:
- HTTP 请求 → 设置变量:
raw_api_response = {{response}} - JSON 解析 → 设置变量:
parsed_order = {{json_parse(raw_api_response.body)}} - 条件判断 → 引用:
{{parsed_order.status}}(语义清晰,路径稳定)
{response.json.name} 补全双大括号:
{{response.json.name}} JSON 未解析 字符串比较
'{"code":200}' > 100 恒真 加
json_parse():
{{json_parse(response.body).code}} 路径越界
{{response.json.items[5].id}} 报 undefined 加空值保护:
{{response.json.items?[5]?.id}}
该问题本质是低代码平台的“上下文契约”缺失。资深工程师应推动团队建立《Coze 变量命名规范》:前缀区分来源(http_、user_、calc_),强制在分支合并点注入 contract_* 变量,并将调试日志结构存为 JSON Schema 文档。这已超越工具技巧,直指可维护性工程底线。
- 截断验证:在 HTTP 节点后立即接「调试信息」,输出
{{response}}全量对象 - 路径探针:用
{{typeof response.json}}、{{Array.isArray(response.json.items)}}确认类型 - 契约固化:所有跨节点数据流,必须经由「设置变量」节点声明,禁止裸引用中间态
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/266545.html