如何将包含具有不同属性名称的复杂对象属性的不同对象进行deseriliaze

时间:2017-07-10 20:23:55

标签: c# json c#-4.0 deserialization

我有一个对象如下:

Organization:
      { Id : 1, Name : name,  OrgType : { typeId : 1, name: tname }, employees : [{id:1, name:sm },{id:2, name:sm1 },{id:3, name:sm3 }]

所以,这里的复杂对象包含Organization,OrgType和Employee列表。

问题是,我从一个服务响应中收到此集合,而我的应用程序具有不同的对象结构。

如何将上述对象反序列化为以下结构:

Organization :
       Id changed to OrgId
       Name as Name,
       OrgType object changed to Type object
       Employees List object changed to EmpList object

In Type object - typeId changed to OtId, name changed to Name.

Employee object - id changed Id, name changed to EmployeeName

这里,如何反序列化为上面的对象,其中不同的属性也包含复杂的对象。

1 个答案:

答案 0 :(得分:-1)

选项1。

您可以反序列化为dynamic类型,然后将其映射到目标模型。

e.g。 dynamic tempObject = JObject.Parse(serializedString);

或选项2。

如果您知道源模型将保持不变,则可以创建一个与传入模型具有相同结构的模型,并反序列化为该模型。

然后 - 两个选项

您可以使用AutoMapper将源对象映射到目标对象。 有很多资源都有关于如何实现这一点的详细信息 - 以下是使用动态源对象的示例:https://github.com/AutoMapper/AutoMapper/wiki/Dynamic-and-ExpandoObject-Mapping