在我的場景中,我想將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