在Logic App中遍历JSON数组读取特定值及空值报错排查
解决Logic App遍历ws:Worker数组返回Null的思路
检查JSON结构是否为数组
XML转JSON时,若原XML仅含单个<ws:Worker>节点,转换结果会是对象而非数组,导致@body('Parse_JSON_FIle')?['ws:Worker']返回单个对象而非数组,触发For_each报错。可通过以下两种方式处理:- 修改Parse_JSON的Schema,将
ws:Worker定义为数组类型(即使单条记录也强制解析为数组) - 在For_each的输入表达式中手动转换:
@json(concat('[', string(body('Parse_JSON_FIle')?['ws:Worker']), ']'))
- 修改Parse_JSON的Schema,将
核对键名与命名空间处理
XML转JSON时,命名空间前缀可能被修改或丢失:- 用Compose动作输出
body('Parse_JSON_FIle')的实际内容,确认键名是ws:Worker还是无前缀的Worker - 若使用Logic App的XML to JSON动作,检查是否开启了保留命名空间的配置,避免前缀被自动移除
- 用Compose动作输出
处理空节点场景
若原XML中无ws:Worker节点,需添加空值判断,避免返回Null:
使用表达式@if(empty(body('Parse_JSON_FIle')?['ws:Worker']), createArray(), body('Parse_JSON_FIle')?['ws:Worker']),空节点时生成空数组供For_each遍历验证Parse_JSON的Schema正确性
若Schema中ws:Worker被定义为对象类型,即使实际JSON是数组也会解析错误。可基于Parse_JSON的实际输出重新生成Schema,确保ws:Worker的类型为array
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

