我想把一个扁平的json字符串变成一个模型,目标类有子类,扁平的json有所有带前缀的子类对象;像“{classname}.{property}”。
{
"FirstName": "Joey",
"LastName": "Billy",
"EmploymentDetails.JobTitle": "JobTitle",
"EmploymentDetails.StartDate": "2015-01-01T00:00:00",
"ContactDetails.HouseNumberName": "10",
"ContactDetails.Road": "Road"
}
这是我的目标课程:
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual EmploymentDetails EmploymentDetails { get;set;}
public virtual ContactDetails ContactDetails { get;set;}
}
public class EmploymentDetails {
public string JobTitle { get; set; }
public DateTime StartDate { get; set; }
}
public class ContactDetails {
public string HouseNumberName { get; set; }
public string Road { get; set; }
}
我尝试了以下方法:
public static void main() {
var json = @"{""FirstName"": ""Joey"",""LastName"": ""Billy"",""EmploymentDetails.JobTitle"": ""JobTitle"",""EmploymentDetails.StartDate"": ""2015-01-01T00:00:00"",""ContactDetails.HouseNumberName"": ""10"",""ContactDetails.Road"": ""Road"",}";
//try using AutoMapper
Mapper.CreateMap<string,Person>();
var personModel = Mapper.Map<Person>(json);
//just returns null values
//try using Newtonsoft
personModel = Newtonsoft.Json.JsonConvert.DeserializeObject<Person>(json);
//fills values but obviously returns no nested data
}
我知道 Automapper 有 RecognizePrefix 和 RecognizeDestinationPrefix,但 AutoMapper 似乎只关心它是否在原始对象中,而不是子类。
可能我可以将我的 JSON 字符串设为字典,但即便如此我也不知道如何将它映射到带有子类的模型。
希望我可以拥有无限数量的子类,并且 JSON 字符串可以将平面 JSON 模型映射到模型。