当源是json时,是否可以设置Automapper将索引和值都转换为枚举?

时间:2020-05-22 17:11:19

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

我正在编写一个测试脚本,其中源数据是json字符串。参数之一是枚举,并且源数据可以是枚举的索引值或字符串值。

我具有Automapper配置文件设置,可以将字符串值正确转换为模型中的枚举,但是我无法确定如何编写配置文件来处理这两种情况?是否可以编写一个配置文件来处理下面的两个示例json?

// Sample JSON One
{
  "Category": 3
}

// Sample JSON Two
{
  "Category": "SERVICE"
}

public enum Category
{
    REPAIR,
    SERVICE,
    MONITOR,
    REPLACE
}

public class CategoryModel
{
    public Category categoryType { get; set; }
}

public JsonTestProfile()
{
    // This works for Sample 2, but not Sample 1
    CreateMap<JObject, CategoryModel>()
        .ForMember("categoryType", option => { option.MapFrom(json => json["Category"].ToString()); });
}

public void JsonAutoMapperTst()
{
    //Assemble
    var config = new MapperConfiguration(cfg =>
    {                
        cfg.AddProfile<JsonTestProfile>();
    });
    var mapper = config.CreateMapper();

    var folderDetails = Path.Combine(Directory.GetCurrentDirectory(), $"Sample.json");
    var jsonText = System.IO.File.ReadAllText(folderDetails);
    var jsonObj = JObject.Parse(jsonText);

    CategoryModel request = mapper.Map<JObject, CategoryModel>(jsonObj);    
}

0 个答案:

没有答案