AutoMapper 扁平化嵌套 json
AutoMapper Flattening out nested json
我正在尝试使用 Automapper 来拉平 json 结果,但我收到一条错误消息:Missing type map configuration or unsupported mapping
在我的项目中,我同时安装了 AutoMapper 和 AutoMapper 依赖注入包。
我的 Startup.cs 有以下调用:
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(typeof(Startup));
}
我已经按如下方式设置了我的映射配置文件:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<JiraTicket, JiraDto>();
}
}
我要展平的模型和 DTO 应该展平为:
public class JiraTicket
{
[Key]
public int TicketId { get; set; }
public string id { get; set; }
public string self { get; set; }
public string key { get; set; }
public JiraTicketFields fields { get; set; }
}
public class JiraDto
{
public int Id { get; set; }
public string Creator { get; set; }
public string Description { get; set; }
public string Key { get; set; }
public string Self { get; set; }
}
大多数 DTO 变量都在`JiraTicketFields 中。
最后,我使用以下代码行调用我的存储库:
public async Task<IEnumerable<JiraDto>> GetAll()
{
var tickets = _jiraRepo.GetAll().ToList();
var result = (IEnumerable<JiraDto>)_mapper.Map<JiraDto>(tickets);
return result;
}
它是在我的项目到达 var result...
行时引发错误的。我在其中缺少什么?
您创建了一个配置文件,告诉 Automapper 如何将单个 JiraTicket
转换为单个 JiraDto
,但我认为问题在于您正在尝试映射 IEnumerable<JiraTicket>
到单个 JiraDto
,而 Automapper 不知道该怎么做。
您可能想要做的(如果我理解正确的话)是将 IEnumerable<JiraTicket>
映射到 IEnumerable<JiraDto>
。然后,您必须这样做:
public async Task<IEnumerable<JiraDto>> GetAll()
{
var tickets = _jiraRepo.GetAll().ToList();
var result = _mapper.Map<IEnumerable<JiraDto>>(tickets);
return result;
}
调用此函数将 JiraTickets 列表转换为 JiraDtos 的 IEnumerable
var result = mapper.Map<IEnumerable<JiraDto>>(tickets);
AutoMapper 中的转换是通过泛型参数完成的,而不是通过显式转换
我正在尝试使用 Automapper 来拉平 json 结果,但我收到一条错误消息:Missing type map configuration or unsupported mapping
在我的项目中,我同时安装了 AutoMapper 和 AutoMapper 依赖注入包。
我的 Startup.cs 有以下调用:
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(typeof(Startup));
}
我已经按如下方式设置了我的映射配置文件:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<JiraTicket, JiraDto>();
}
}
我要展平的模型和 DTO 应该展平为:
public class JiraTicket
{
[Key]
public int TicketId { get; set; }
public string id { get; set; }
public string self { get; set; }
public string key { get; set; }
public JiraTicketFields fields { get; set; }
}
public class JiraDto
{
public int Id { get; set; }
public string Creator { get; set; }
public string Description { get; set; }
public string Key { get; set; }
public string Self { get; set; }
}
大多数 DTO 变量都在`JiraTicketFields 中。
最后,我使用以下代码行调用我的存储库:
public async Task<IEnumerable<JiraDto>> GetAll()
{
var tickets = _jiraRepo.GetAll().ToList();
var result = (IEnumerable<JiraDto>)_mapper.Map<JiraDto>(tickets);
return result;
}
它是在我的项目到达 var result...
行时引发错误的。我在其中缺少什么?
您创建了一个配置文件,告诉 Automapper 如何将单个 JiraTicket
转换为单个 JiraDto
,但我认为问题在于您正在尝试映射 IEnumerable<JiraTicket>
到单个 JiraDto
,而 Automapper 不知道该怎么做。
您可能想要做的(如果我理解正确的话)是将 IEnumerable<JiraTicket>
映射到 IEnumerable<JiraDto>
。然后,您必须这样做:
public async Task<IEnumerable<JiraDto>> GetAll()
{
var tickets = _jiraRepo.GetAll().ToList();
var result = _mapper.Map<IEnumerable<JiraDto>>(tickets);
return result;
}
调用此函数将 JiraTickets 列表转换为 JiraDtos 的 IEnumerable
var result = mapper.Map<IEnumerable<JiraDto>>(tickets);
AutoMapper 中的转换是通过泛型参数完成的,而不是通过显式转换