Я пытаюсь сопоставить JObject с классом POCO, используя Automapper. Он сопоставил только одно и то же свойство name, а метод ignore не работает.
Я не уверен, что AutoMapper поддерживает сопоставление Json с классом POCO или это так?проблема с моей конфигурацией?
internal class Program
{
private static void Main(string[] args)
{
AutoMapperConfiguration.Configure();
string json = File.ReadAllText("jsonData.json");
JArray assets = JArray.Parse(json);
List<AssetDTO> assetDTOList = Mapper.Map<List<AssetDTO>>(assets);
}
}
public class AutoMapperConfiguration
{
public static void Configure()
{
AutoMapper.Mapper.Initialize(x => x.AddProfile<AssetProfile>());
}
}
public class AssetProfile : Profile
{
public AssetProfile()
{
CreateMap<JObject, AssetDTO>()
.ForAllMembers(dest => dest.Ignore());
CreateMap<JObject, AssetDTO>()
.ForMember(dest => dest.AssetId, o => o.MapFrom(j => j["AssetId"]))
.ForMember(dest => dest.Type, o => o.MapFrom(j => j["AssetType"]))
.ForMember(dest => dest.DeviceSerialNumber, o => o.MapFrom(j => JArray.Parse(j["Device"].ToString())[0]["SerialNumber"]));
}
}
public class AssetDTO
{
public string AssetId { get; set; }
public string DeviceSerialNumber { get; set; }
public string Type { get; set; }
}
jsonData.json
[
{
"AssetType": "Paver",
"AssetId": "PaverId100",
"ContactName": "ContactName",
"Description": "description",
"Device": [
{
"Make": "BP02",
"SerialNumber": "BPPA0001",
"Ucid": null,
"Address": {
"AddressLine1": "address 1",
"AddressLine2": "add 2",
"City": "city",
"State": "B'lore",
"ZipCode": "124578",
"Country": "India"
}
}
]
}
]
Github репозиторий для примера кода