在我的场景中,我想将json映射到具体类型,另一种方式是使用带有.net核心的automapper版本6。Automapper:将对象转换为JSON
基于这个答案 - https://stackoverflow.com/a/38108128/6602770我设法将JSON映射到所需的类型。但是,我似乎无法将其映射回其JSON格式。
我的代码如下所示:
映射轮廓:
CreateMap<JToken, SomeDto>()
.ForMember(dest => dest.ObjectId, cfg => { cfg.MapFrom(jo => jo["objectId"]); })
.ReverseMap()
.ForAllOtherMembers(x => x.Ignore());
和映射:
var json = _mapper.Map<JToken>(someDto);
没有错误,但它返回null。 我也尝试用JObject而不是JToken来设置配置文件,结果相同。
我还试图创建一个单独的映射分布,而是采用了“ReverseMap”
public class SomeDtoProfile : Profile
{
public SomeDtoProfile()
{
CreateMap<SomeDto, JObject>()
.ForMember(dest=> dest["objectId"], cfg => { cfg.MapFrom(src => src.ObjectId); })
.ForAllOtherMembers(x => x.Ignore());
}
}
但是,这将引发一个错误信息:“为成员自定义配置仅支持顶级个人会员上一个类型的json“
我真的很喜欢使用AutoMapper的解决方案,是所有可能的还是我缺少一些基本的东西?
为什么要为此使用automapper?为什么不直接将你的JSON转换为'SomeDto'?如果序列化/反序列化变得复杂,则可以使用自定义转换器。 –
为什么你不使用[Json.NET](https://www.nuget.org/packages/newtonsoft.json)来序列化或反序列化? – Behzad
我已经使用automapper的第一种方式(JSON到SomeDto),它涉及到许多属性和自定义的解析器。我想保留使用相同概念的其他方式的映射逻辑。可以做到吗? – Egor