如何在Power Automate中遍历带有动态属性的JSON数据(TSheet工时表API场景)
如何在Power Automate中遍历带有动态属性的JSON数据(TSheet工时表API场景)
嘿,我完全懂你现在的头疼之处——TSheet返回的这个JSON结构确实有点反直觉,不是咱们平时用的数组格式,而是把每个工时表的ID当成了动态键,直接塞给Apply to Each肯定会报错,因为它只认数组类型的数据。别慌,我来给你一步步拆解怎么搞定:
- 第一步:先确保你已经用Parse JSON动作正确解析了TSheet的API响应。解析的时候最好直接用你拿到的这个示例JSON生成Schema,这样Power Automate能精准识别整个结构。你现在的核心问题就出在
results.timesheets下面的结构:它是一个对象,不是数组。 - 第二步:加一个Compose动作,专门提取出
timesheets这个对象。输入的表达式可以这么写:body('Parse_JSON')?['results']?['timesheets'],记得把Parse_JSON换成你实际用的那个动作的名字哦。 - 第三步:这是最关键的一步!再新增一个Compose动作,用Power Automate自带的
values()函数把刚才的对象转成数组。表达式就写:values(outputs('Compose'))- 简单说下这个函数的作用:它会把
timesheets对象里的所有子对象(也就是每一条工时表数据)都提取出来,自动拼成一个标准数组。转完之后的格式就变成了[{"id":1234567,"state":"CLOSED","user_id":123456}, {"id":415628812,"state":"APPROVED","user_id":234567}],这就是Apply to Each能正常处理的格式了。
- 简单说下这个函数的作用:它会把
- 第四步:现在把第二个Compose动作的输出拖进Apply to Each动作里,就能顺利遍历每一条工时表数据了!在循环里你可以直接引用每个条目的属性,比如
items('Apply_to_Each')?['id']、items('Apply_to_Each')?['state']这些字段都能正常调用。
对了,还有个小技巧:如果你懒得用Parse JSON,其实也可以直接在Compose里一步到位写表达式:values(body('HTTP')?['results']?['timesheets']),前提是你的HTTP请求动作返回的是正确的JSON。不过还是更推荐用Parse JSON,这样有类型校验,后续改起来也更清晰。
备注:内容来源于stack exchange,提问作者Huan Pham
相关产品推荐
相关产品推荐

