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

WebApi控制器中用AutoMapper将Dynamic类型转为Person实体类

我来给你几个靠谱的解决方案,帮你把WebApi控制器里的dynamic类型person转换成自定义的Person实体类:

方法1:用Json.NET直接转换(最稳妥的原生方案)

因为WebApi默认使用Json.NET处理序列化,你可以把dynamic先转成JObject,再反序列化成Person实体,代码示例:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

[HttpPost]
public IHttpActionResult Post([FromBody]dynamic person) 
{
    // 将dynamic转换为JObject
    JObject personObj = JObject.FromObject(person);
    // 反序列化为Person实体
    Person personEntity = personObj.ToObject<Person>();

    // 现在personEntity就是你需要的实体了,可以正常使用它的属性
    return Ok(personEntity);
}

方法2:修复AutoMapper的配置(如果坚持用AutoMapper)

你之前用Mapper.Initialize没成功,大概率是映射配置没匹配对——因为WebApi里的dynamic实际运行时类型是JObject,不是你发起请求时的匿名类型。调整配置即可:

旧版AutoMapper(8.x及以下)

// 在项目启动处配置(比如Global.asax的Application_Start方法里)
Mapper.Initialize(cfg => 
{
    // 配置JObject到Person的映射,或者直接配置dynamic到Person
    cfg.CreateMap<JObject, Person>();
    // 或者 cfg.CreateMap<dynamic, Person>();
});

// 控制器中使用
[HttpPost]
public IHttpActionResult Post([FromBody]dynamic person) 
{
    Person personEntity = Mapper.Map<Person>(person);
    return Ok(personEntity);
}

新版AutoMapper(9.x及以上)

新版推荐使用MapperConfiguration来创建映射器,避免静态Mapper的问题:

// 可以在Startup.cs或者专门的映射配置类中初始化
var mapperConfig = new MapperConfiguration(cfg => 
{
    cfg.CreateMap<JObject, Person>();
});
IMapper mapper = mapperConfig.CreateMapper();

// 控制器中使用
[HttpPost]
public IHttpActionResult Post([FromBody]dynamic person) 
{
    Person personEntity = mapper.Map<Person>(person);
    return Ok(personEntity);
}

方法3:手动映射(适合属性少的场景)

如果你的Person类属性不多,手动赋值是最直接的方式,完全不需要依赖第三方库:

[HttpPost]
public IHttpActionResult Post([FromBody]dynamic person) 
{
    Person personEntity = new Person
    {
        Firstname = person.Firstname,
        Lastname = person.Lastname
    };

    return Ok(personEntity);
}

补充说明

为什么之前AutoMapper没生效?因为你发起请求时的匿名类型,到了WebApi控制器里会被序列化为JObject类型的dynamic,而不是原来的匿名类型。所以你如果之前配置的是匿名类型到Person的映射,自然会失效,改成JObject或dynamic到Person的映射就可以正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:29:57