源对象(JSON格式,如果有影响请使用JSON.NET):
{
"conum" : 1001,
"name" : "CLN Industries Corporation",
"agencyName" : "Murphy, Holmes & Associates, LLC",
"sAA" : [{
"code" : 247,
"description" : "Mechanic\u0027s lien - Bond to Discharge - Fixed penalty - where principal has posted Performance and Pa"
}, {
"code" : 277,
"description" : "Mechanic\u0027s lien - Bond to Discharge - Open Penalty - where principal has posted Performance and Paym"
}, {
"code" : 505,
"description" : "Indemnity Bonds - Contractor\u0027s Indemnity Against Damages where there is a performance bond and addit"
}
]
}
目标对象 (C#):
public class CorporateRatesInfo
{
public string Conum { get; set; }
public string Name { get; set; }
public string AgencyName { get; set; }
public List<SaaCode> SaaCodes { get; set; }
}
public class SaaCode
{
public string Code { get; set; }
public string Description { get; set; }
}
Automapper配置和映射:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<JObject, CorporateRatesInfo>();
cfg.AddProfile<CorporateRatesProfile>();
});
//config.AssertConfigurationIsValid();
_mapper = config.CreateMapper();
public class CorporateRatesProfile : Profile
{
protected override void Configure()
{
CreateMap<JObject, CorporateRatesInfo>()
.ForMember("SaaCodes", cfg => { cfg.MapFrom(jo => jo["sAA"]); })
.ForMember("Conum", cfg => { cfg.MapFrom(jo => jo["conum"]); })
.ForMember("Name", cfg => { cfg.MapFrom(jo => jo["name"]); })
.ForMember("AgencyName", cfg => { cfg.MapFrom(jo => jo["agencyName"]); });
}
}
除了SaaCodes转换之外,一切正常,其中Automapper将每个条目转换为空的SaaCode对象(所有属性设置为null)。
我应该在哪里告诉automapper如何将JSON字段中的项目转换为其目标类型?