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

C#如何解析Graph API返回的嵌套JSON并映射到自定义实体模型

解决方案:Microsoft Graph API Excel返回结果映射到实体类

1. 先明确Graph API返回的核心结构

调用获取Excel行数据接口后,返回的核心嵌套字段是二维数组values,默认第一行是表头,后续每一行对应一条业务数据,列顺序和Excel表格列顺序完全对齐,通用结构参考如下:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#workbookRange",
  "address": "Sheet1!A1:D20",
  "cellCount": 80,
  "values": [
    ["序号", "项目名称", "金额", "状态"], // 第0行:表头
    ["1", "采购项目A", "12500", "已完成"], // 第1行:第一条业务数据
    ["2", "研发项目B", "48600", "进行中"]  // 第2行:第二条业务数据
  ]
}

2. 实体类定义参考

你现有的两个实体类可以按如下结构对齐,确保顶层实体可以接收values二维数组:

// 接收Graph API返回的顶层结果实体
public class MikesExcelResults
{
    // 其他返回字段如address、cellCount按需添加即可
    public List<List<object>> values { get; set; }
}

// 对应Excel单行业务数据的实体
public class MikesExcelModel
{
    public int SerialNum { get; set; }
    public string ProjectName { get; set; }
    public decimal Amount { get; set; }
    public string Status { get; set; }
}

3. 映射逻辑实现

核心逻辑为跳过表头行,遍历后续每一行数据,按列索引取值并做类型转换,代码如下:

public List<MikesExcelModel> ConvertToModelList(MikesExcelResults graphApiResult)
{
    var resultList = new List<MikesExcelModel>();
    // 空值校验,避免空引用异常
    if (graphApiResult?.values == null || graphApiResult.values.Count <= 1)
        return resultList;

    // i从1开始遍历,跳过第0行的表头;如果你拉取范围不含表头,就把i改为0
    for (int i = 1; i < graphApiResult.values.Count; i++)
    {
        var currentRow = graphApiResult.values[i];
        // 行数据长度不足时跳过,避免索引越界
        if (currentRow == null || currentRow.Count < 4)
            continue;

        var model = new MikesExcelModel
        {
            // 按列索引取值,同时做类型容错转换
            SerialNum = int.TryParse(currentRow[0]?.ToString(), out var sn) ? sn : 0,
            ProjectName = currentRow[1]?.ToString() ?? string.Empty,
            Amount = decimal.TryParse(currentRow[2]?.ToString(), out var amount) ? amount : 0,
            Status = currentRow[3]?.ToString() ?? string.Empty
        };
        resultList.Add(model);
    }
    return resultList;
}

注意事项

  • 取值的索引顺序要和Excel的列顺序完全对应,避免字段映射错乱
  • 所有取值都要加空值判断和类型转换容错,避免Excel空单元格、格式异常导致程序崩溃
  • 如果调用Graph API时指定的拉取范围已经排除了表头,遍历的起始索引改为0即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:15:06