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

Automapper无法绑定泛型列表:JSON转Model列表为空问题求助

解决AutoMapper从JArray映射到List为空的问题

我来帮你搞定这个问题!你遇到的空列表问题,核心原因是AutoMapper不知道如何将JArray直接关联到List的转换逻辑——虽然你手动加了cfg.CreateMap<JArray, List<Student>>(),但这个映射没有实际的转换规则,而且你的Profile类和Model类同名(都叫Student),这也会导致潜在的冲突。下面是具体的修正方案:

第一步:修正Profile类的命名与映射细节

首先把Profile类重命名,避免和Model类冲突,同时完善类型转换细节(JSON里的数字要转成string类型匹配RoleId):

// 重命名Profile类,避免与Student Model冲突
public class StudentProfile : Profile
{
    public StudentProfile()
    {
        CreateMap<JObject, Student>()
            .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src["Code"]))
            .ForMember(dest => dest.Age, opt => opt.MapFrom(src => src["Code"])) // 确认这是你的业务需求哦
            .ForMember(dest => dest.RoleId, opt => opt.MapFrom(src => src["HighLevelClassOfBusinessCode"].ToString()));
    }
}

第二步:修改AutoMapper映射方法

AutoMapper对集合有内置支持,只要你配置了单个元素(JObject→Student)的映射,它会自动处理JArray到List的转换,不需要手动配置集合映射:

public List<Student> GetNewList(JArray jsonData)
{
    // 只需要添加我们的Profile,AutoMapper会自动处理集合映射
    var config = new MapperConfiguration(cfg =>
    {
        cfg.AddProfile<StudentProfile>();
    });

    // 可选:验证映射配置是否正确,提前发现问题
    config.AssertConfigurationIsValid();

    var mapper = config.CreateMapper();
    // 直接映射JArray到List<Student>,AutoMapper会遍历每个JObject应用已配置的规则
    List<Student> newData = mapper.Map<List<Student>>(jsonData);

    return newData;
}

为什么原来的写法不行?

你之前手动添加的cfg.CreateMap<JArray, List<Student>>()覆盖了AutoMapper默认的集合处理逻辑,导致它没有使用你在Profile里配置的JObject→Student映射规则。而循环逐个映射时,你直接调用了JObject到Student的映射,所以能正常工作。

测试示例

用你的JSON数据测试一下,现在能得到正确的结果:

var jsonText = @"
[
    { ""Code"" : ""Class786"", ""HighLevelClassOfBusinessCode"" :3 },
    { ""Code"" : ""Class789"", ""HighLevelClassOfBusinessCode"" :79 }
]";
JArray jsonData = JArray.Parse(jsonText);

var result = GetNewList(jsonData);
// result会包含两个Student对象:
// 第一个:Name=Class786,Age=Class786,RoleId="3"
// 第二个:Name=Class789,Age=Class789,RoleId="79"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:55:25