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

在.NET(C#)项目中自定义List类适配JSON响应

解决C#自定义List类与系统List冲突及JSON反序列化问题

方案1:重命名自定义类(最推荐)

直接将对应JSON "list"节点的自定义类重命名为不冲突的名称(比如WeatherList),通过JsonProperty特性映射到JSON的"list"字段,彻底避免命名冲突:

// 自定义类,对应JSON的list节点结构
public class WeatherList
{
    public DateTime Dt { get; set; }
    public WeatherMain Main { get; set; }
    // 其他对应JSON的属性...
}

// 顶级容器类
public class WeatherResponse
{
    // 用JsonProperty指定JSON中的"list"节点映射到当前属性
    [JsonProperty("list")]
    public List<WeatherList> WeatherItems { get; set; }
    // 其他顶级响应属性...
}

方案2:给自定义List类添加独立命名空间

如果必须保留List作为类名,将其放入专属命名空间,使用时通过完全限定名或别名区分系统List:

步骤1:定义带命名空间的自定义List类

namespace MyProject.WeatherModels
{
    public class List
    {
        public DateTime dt { get; set; }
        public Main main { get; set; }
        // 其他属性...
    }
}

步骤2:在顶级容器类中明确区分

  • 方式一:使用完全限定名
public class WeatherResponse
{
    // 明确指定系统泛型List,以及自定义List的命名空间
    public System.Collections.Generic.List<MyProject.WeatherModels.List> list { get; set; }
}
  • 方式二:使用别名简化代码
    在代码文件顶部添加别名声明:
// 给系统List和自定义List分别起别名
using SysList = System.Collections.Generic.List;
using WeatherList = MyProject.WeatherModels.List;

public class WeatherResponse
{
    public SysList<WeatherList> list { get; set; }
}

方案3:使用全局别名(针对整个项目)

如果多个文件都需要区分,可在项目属性中添加全局别名:

  1. 右键项目 → 属性 → 生成 → 高级 → 其他编译选项
  2. 添加:/r:System.Collections.Generic.List=SysList
  3. 之后在代码中直接用SysList<MyProject.WeatherModels.List>来指代系统泛型List

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 01:09:27