我正在编写一个测试脚本,其中源数据是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);
}