需用loop节点按路径data.orders.*.items展开数组,再在loop内用{{item.sku || "unknown"}}或代码节点校验提取字段,最后经过滤和映射输出干净sku-价格数组。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要从扣子工作流输出的嵌套JSON中精准提取特定字段,比如订单号、SKU、金额,但原始数据结构复杂、层级深、字段名不统一,手动遍历容易漏项或报错。
确认JSON结构并定位目标路径
在工作流中任一节点(如大模型节点或HTTP请求节点)右侧点击「调试」→ 运行一次 → 查看「输出」面板中的原始JSON。不要直接看预览框,它会自动美化并隐藏空值,而真实数据里可能含null或缺失字段。
用Ctrl+F搜索关键词(如"order_id"或"items"),观察其所在层级。若发现类似"data": {"orders": [{"id": "O1", "items": [...]}, ...]}结构,说明目标字段藏在data.orders.*.items.*.sku路径下——【必须用.*.展开所有数组项,不能写成[0]或[1]】。
这一步跳过会导致后续Loop或变量引用全部失效。
用Loop节点逐层展开嵌套数组
拖入Loop节点 → 点击设置图标 → 在「循环路径」栏填入你刚确认的路径,例如data.orders.*.items。
注意:路径末尾不能带点,也不能加引号;如果路径含中文字段名(如"商品列表"),必须用方括号语法:data["订单信息"].*["商品列表"]。
Loop启用后,内部所有节点将自动执行2次(假设有2个item)、5次(对应5个SKU),每次处理一个独立item对象。此时{{item.sku}}才有效,{{input.data.orders[0].items[0].sku}}会始终返回第一个值,无法批量处理。
在Loop内安全提取字段并容错
方法一:直接引用+默认值兜底
在Loop内部节点(如HTTP请求Body或代码节点)中写{{item.sku || "unknown"}}。双竖线是Coze原生支持的逻辑或,默认值仅在字段为null/undefined时生效,不会覆盖空字符串。
方法二:用代码节点做强校验
添加代码节点 → 输入变量设为item(类型Object)→ 脚本写:
if (!item || typeof item !== "object") return { error: "invalid item" };<br>return { sku: item.sku?.trim() || null, qty: Number(item.qty) || 0 };
【item.sku?.trim()中的?.是可选链,避免item.sku为undefined时抛错】
聚合输出并过滤无效项
第一步:接聚合节点 → 模式选「过滤」→ 条件填item.sku && item.sku.length > 0。
第二步:再接一个代码节点 → 输入变量filtered(类型Array)→ 脚本:return filtered.map(x => ({ sku: x.sku, price: x.price || 0 }));
第三步:把该代码节点输出连到结束节点。
这三步做完后,最终输出就是干净的SKU-价格数组,不含null、空字符串或结构错误项。










