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);
示例代码
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);