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

C# 读取JSON文件后无法将数据填充到Vehicle对象列表问题

C# JSON车辆列表加载问题修复方案

问题根因

  • ReadParkingFile方法中反序列化得到的data是方法内部局部变量,方法执行结束后就会被回收,完全没有赋值给全局的ParkingHouse.vehicles列表,是导致重启后数据无法加载的核心原因
  • SaveToJasonFile方法的string vehicle入参完全没有被使用,属于冗余参数,方法名存在拼写错误(Jason应为Json,不影响功能执行)

修复后的代码

读取方法修复

public static void ReadParkingFile()
{
    string path = @"../../../Configfile/ParkingList.json";
    // 新增文件存在校验,避免首次启动无配置文件时报错
    if (!File.Exists(path))
    {
        ParkingHouse.vehicles = new List<Vehicle>(100);
        return;
    }
    string jsonText = File.ReadAllText(path);
    // 直接将反序列化结果赋值给全局车辆列表,空值兜底避免空引用异常
    ParkingHouse.vehicles = JsonConvert.DeserializeObject<List<Vehicle>>(jsonText) ?? new List<Vehicle>(100);

    // 如果你需要保留原有列表的初始化内容,不希望直接覆盖,可以替换为以下代码:
    // List<Vehicle> data = JsonConvert.DeserializeObject<List<Vehicle>>(jsonText) ?? new List<Vehicle>();
    // ParkingHouse.vehicles.AddRange(data);
}

保存方法修复

// 移除无意义的入参,修正方法名拼写
public static void SaveToJsonFile()
{
    string path = @"../../../Configfile/ParkingList.json";
    // 格式化输出JSON,方便手动排查内容
    string jsonContent = JsonConvert.SerializeObject(ParkingHouse.vehicles, Formatting.Indented);
    File.WriteAllText(path, jsonContent);
}

额外注意事项

Vehicle类必须包含public无参构造函数,Newtonsoft.Json反序列化依赖无参构造创建对象,如果你的Vehicle类只定义了带参构造,需要手动补充public无参构造,否则会出现反序列化失败的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:54:07