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

C#:JsonConvert反序列化List数据写入Excel及列表访问问题

问题1:遍历Score列表输出类名而非数值的解决办法

你看到ConsoleApp.Program+Score是因为Console.WriteLine默认调用对象的ToString()方法,而自定义的Score类没有重写这个方法,所以输出的是类型的完全限定名称。有两种解决方式:

方式1:直接访问Score类的score属性输出

修改遍历代码,直接输出属性值:

foreach (var s in scores)
{
    Console.WriteLine(s.score);
}

方式2:重写Score类的ToString()方法

在Score类中添加ToString()重写,让它直接返回score的字符串形式(还可指定格式):

public class Score
{
    public float score { get; set; }

    public override string ToString()
    {
        return score.ToString("F2"); // 保留两位小数,按需调整格式
    }
}

之后直接Console.WriteLine(s)就能输出数值。


问题2:将Score列表插入Excel工作表的实现

可以使用EPPlus库来操作Excel,步骤如下:

1. 安装EPPlus NuGet包

在NuGet包管理器中搜索并安装EPPlus,或通过Package Manager Console执行:

Install-Package EPPlus

2. 编写Excel导出代码

using OfficeOpenXml;
using System.IO;

// 初始化Excel包
using (var excelPackage = new ExcelPackage())
{
    // 创建工作表
    var worksheet = excelPackage.Workbook.Worksheets.Add("分数数据");
    
    // 写入表头
    worksheet.Cells[1, 1].Value = "测试分数";
    
    // 遍历Score列表,写入数据
    for (int i = 0; i < scores.Count; i++)
    {
        // 从第2行开始写入数据(第1行是表头)
        worksheet.Cells[i + 2, 1].Value = scores[i].score;
    }
    
    // 保存Excel文件到指定路径
    var fileInfo = new FileInfo(@"D:\scores.xlsx");
    excelPackage.SaveAs(fileInfo);
}

额外注意:JSON反序列化的大小写匹配问题

你的Response类中字段是小写的loc和risk,但JSON响应里是大写开头的Loc和Risk,默认情况下Json.NET不会自动映射,可能导致反序列化后loc和risk为null。需要给Response类的字段添加JsonProperty特性来匹配JSON键名:

public class Response
{
    [JsonProperty("Loc")]
    public Loc loc { get; set; }
    [JsonProperty("Risk")]
    public Risk risk { get; set; }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:34:53