使用NewtonSoft Json序列化有条件地填充DTO字段

时间:2020-04-08 08:44:18

标签: c# json.net converters

我有3个API调用,所有调用都返回用户数据的响应。我正在以3种不同的DTO结构捕获数据:

public class BaseUserDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender{ get; set; }
    public string Email{ get; set; }
    ...
}
public class EmpEntryDto
{
    [JsonProperty("Legal_First_Name")]
    public string LegalFirstName { get; set; }

    [JsonProperty("Legal_Last_Name")]
    public string LegalLastName { get; set; }

    [JsonProperty("Gender")]
    public string Gender { get; set; }

    [JsonProperty("Email")]
    public string Email{ get; set; }
    ...
}
public class EmpCsvDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender{ get; set; }
    public string Email{ get; set; }
    ...
}

最后一个DTO,我正在转换为Azure存储实体:

public class UserDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender{ get; set; }
    public string Email { get; set; }
    ...
}

在存储诸如Gender之类的信息之前,我已经合并了3个数据源并应用了逻辑,因此,如果所有源信息都包含Gender为“ Male / Female”而不是“ M / F”,则我想在UserDto中填充Gender该值。

我想我将逻辑应用于:

UserDto user = new UserDto {
  Gender = (baseDto.Gender == "M") ? baseDto.Gender : ((empEntryDto.Gender == "M") ? empEntryDto.Gender : empCsvDto.Gender);
};

但这对我来说似乎不是一个好方法。

该如何以更智能的方式实现?我搜索了Json属性属性,但是无法应用这种逻辑。

0 个答案:

没有答案