在自动映射器中反序列化动态对象?



我正在从第三方API获取一些数据。在响应中,我得到了一个动态location_info对象

{
"country_code3": "SE",
"country_name": "Sweden",
"city_name": "Malmo",
"latitude": 86.69,
"longitude": 173.0551
}

现在我想获取country_name并使用自动映射器将其映射到属性Country中。为此,我想将上面提到的动态 JSON 反序列化为LocationInfo模型:

public class LocationInfo
{
public string Country_Name { get; set; }
}

然后自动映射器将Country_Name映射到Country。这是我尝试过的:

.ForMember(dest => dest.Country, opts => opts.MapFrom(src => JsonConvert.DeserializeObject<LocationInfo>(src.LocationInfo).Country_Name); 

但它没有用,我得到以下异常:

表达式树不能包含动态操作。

当您需要在映射中执行某些方法时,可以使用ResolveUsing方法。对于您的情况,它将是:

.ForMember(dest => dest.Country, opts => opts.ResolveUsing(src => JsonConvert.DeserializeObject<LocationInfo>(src.LocationInfo).Country_Name); 

最新更新