You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure Logic App将API返回JSON映射为Microsoft Graph tiIndicator结构

Azure Logic App JSON结构映射最优实现方案

方案1:零代码原生操作实现(推荐简单场景)

直接用Logic App内置的标准操作完成转换,无需额外代码,维护成本最低:

  • 首先处理外部API返回结果,使用「解析JSON」操作校验返回结构,提取data字段的IOC数组
  • 新增「For each」循环,遍历data数组的每一个IOC条目
  • 在循环内添加「组合(Compose)」操作,直接构造符合Microsoft Graph tiIndicator规范的目标对象,按需完成字段映射,示例映射规则如下:
    {
      "expirationDateTime": "@{addDays(utcNow(), 30)}",
      "externalId": "@{items('For_each')?['id']}",
      "ingestedDateTime": "@{utcNow()}",
      "isActive": true,
      "killChain": ["@{items('For_each')?['threat_type_desc']}"]
      // 其余无对应源数据的字段可留空或省略
    }
    
  • 最后将「组合」操作的输出作为输入,调用Azure表存储的「插入实体」操作即可完成写入,可将threat_type作为分区键、源数据id作为行键避免数据重复。

方案2:内置JS脚本实现(推荐复杂映射场景)

如果存在多字段分支判断、批量转换等复杂逻辑,用内置的JavaScript代码操作性能更高:

  • 直接提取API返回的data数组传入「执行JavaScript代码」操作,示例代码如下:
    const iocList = workflowContext.actions.调用_API.outputs.body.data;
    return iocList.map(item => {
      const target = {
        externalId: item.id,
        killChain: [item.threat_type_desc],
        ingestedDateTime: new Date().toISOString(),
        expirationDateTime: new Date(Date.now() + 30*24*60*60*1000).toISOString(),
        isActive: true
      };
      // 可根据ioc_type动态填充对应字段
      if(item.ioc_type === 'filehash') {
        target.fileHashValue = item.ioc;
        target.fileHashType = item.threat_type;
      }
      return target;
    });
    
  • 脚本返回的转换后数组可直接批量写入表存储,无需逐行循环,处理效率更高。

内容的提问来源于stack exchange,提问作者my name jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:45:00