Automapper не отображает JObject в POCO, а не отображает Int - PullRequest
0 голосов
/ 09 ноября 2018

Пример кода

    JToken json = JObject.Parse(
        " {\"Url\": \"www.fakeUrl.com\",\"CallId\": 12}");

    var poco = mapper.Map<CallData>(json);

    Console.WriteLine(json);
    Console.WriteLine(poco.Url + " " + poco.CallId); 

Простая модель

   public class CallData
    {
        public int CallId { get; set; }
        public string Url { get; set; }
    }

выход

{"Url": "www.fakeUrl.com", "CallId": 12}

www.fakeUrl.com 0

Мне просто интересно, почему Automapper не отображает целое число в этом объекте JSON? Я знаю, что есть альтернативы, такие как пользовательское расширение для этого, но мне интересно, почему AutoMapper не может сделать эту простую карту?

Automapper V7.0.1

1 Ответ

0 голосов
/ 09 ноября 2018

Я решил проблему, добавив пользовательское сопоставление. Я по-прежнему считаю, что это проблема с подчеркивающими библиотеками, и я буду продолжать ее изучение, поскольку это простое примитивное отображение не должно нуждаться в расширениях.

Mapper

CreateMap<dynamic ,CallData>().ConvertUsing((jo) =>
{
    var callData = new CallData();
    JsonSerializer serializer = new JsonSerializer();
    if(jo != null)
     serializer.Populate((JsonReader) jo.CreateReader(), callData);
    return callData;
});

Использование

var response =_mapper.Map<dynamic, CallData>(_callData);
...