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

如何在应用逻辑中转换Log Analytics返回JSON为Adaptive Cards格式

Log Analytics API返回结果转自适应卡片实现方案

核心逻辑:列结构固定的场景下不需要做动态列映射,按列索引遍历填充行数据即可,避免多层嵌套循环组装时的索引错位问题。


前置处理

首先解析HTTP请求拿到的JSON响应,直接取第一个表作为主结果集:

  • Log Analytics查询接口返回的结果中,tables[0]固定为查询对应的主结果PrimaryResult
  • 提取其中的columns数组存为列配置,rows数组存为动态行数据,行数不需要提前固定,循环自动适配

可直接复用的转换代码(JavaScript通用版)

转换完成的结果可以直接存在变量中,后续作为Webhook POST请求的body使用:

// 替换为你从HTTP响应中拿到的原始JSON对象
const logAnalyticsResp = {
  "tables": [
    // 你的原始返回结果
  ]
};

const primaryResult = logAnalyticsResp.tables[0];
const { columns, rows } = primaryResult;

// 初始化目标自适应卡片结构
const adaptiveCardResult = {
  "type": "ColumnSet",
  "columns": []
};

// 按列索引遍历组装
for (let colIdx = 0; colIdx < columns.length; colIdx++) {
  const currentCol = {
    "type": "Column",
    "items": [
      // 第一行固定为加粗的列名
      {
        "type": "TextBlock",
        "text": `**${columns[colIdx].name}**`
      }
    ]
  };

  // 遍历所有行,填充当前列对应的单元格内容
  for (const row of rows) {
    currentCol.items.push({
      "type": "TextBlock",
      "text": String(row[colIdx]) // 统一转字符串,兼容数字、时间类型,避免渲染报错
    })
  }

  adaptiveCardResult.columns.push(currentCol);
}

// adaptiveCardResult即为最终需要的结构,可直接存储调用

适配说明

  • 支持任意动态行数,返回0行、数十行数据都可以正常生成结构
  • 数值、时间类型字段统一转字符串,规避不同自适应卡片渲染端的类型校验问题
  • 后续如果需要新增固定列,只需要调整Log Analytics的查询语句,不需要修改转换逻辑

内容的提问来源于stack exchange,提问作者Yugo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:01:05