Automapper 不将 JObject 映射到 POCO 不映射 Int

Automapper Not Mapping JObject To POCO Not Mapping Int

示例代码

    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

我通过添加自定义映射解决了这个问题。我仍然认为这是下划线库的问题,并将进一步调查,因为这个简单的原始映射不需要扩展。

映射器

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);