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

时间:2018-11-09 10:16:29

标签: c# json.net automapper .net-core-2.1

示例代码

    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 :(得分:0)

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

映射器

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