我有一个具有一组属性的类,例如:
class Employee
{
string Id {get ; set ; }
string Name {get ; set ; }
string Lastname {get ; set ; }
string email {get ; set ; }
}
我有另一个对象 - 我从第三方获取数据作为API字符串。我使用NewtonSoft Json对它们进行反序列化。他们的结构看起来像这样:
class ThirdPartyEmployee
{
string EmpId {get ; set ; }
string fName {get ; set ; }
string LName {get ; set ; }
string emailID {get ; set ; }
string Phonenumber {get ; set ; }
}
为简单起见 - 我无法更改两个类的属性。
现在的问题是,当我收到json对象时,
List<Employee> obj1 = new List<Employee>();
List<ThirdPartyEmployee> obj2 = JsonConvert.DeserializeObject<List<ThirdPartyEmployee>>(JsonConvert.SerializeObject(responseString));
现在我需要将obj2
转换为obj1
。虽然我可以通过说:
foreach (var currObj2 in obj2)
{
Employee employee = null ;
employee .Id = currObj2 .EmpId;
employee.Name = currObj2.fName;
employee.Lastname = currObj2.LName;
employee.email = currObj2.emailID;
obj1.add(employee);
}
使用某种映射机制有更简单的方法吗?
虽然我给出了一个更简单的例子,但实际场景对于子对象和更多属性来说要复杂得多。
答案 0 :(得分:3)
看看我的朋友AutoMapper,你正在寻找http://automapper.org/
这里有一个可以帮助你的旧问题
答案 1 :(得分:2)
如果您使用的是NewtonSoft,可以尝试使用JsonPropertyAttribute
class ThirdPartyEmployee
{
[JsonProperty("Id")]
string EmpId {get ; set ; }
}
这会将
Id
的json属性映射到EmpId