将一个对象模型转换为另一个对象模型



我有 2 个模型

模型 1= 订单项全部

public partial class OrderItemAll
{
public string ProductCode { get; set; }
public int po_order_no { get; set; }
public string po_backorder_flag { get; set; }
public string EAGTIN { get; set; }
public string INGTIN { get; set; }
public string OUGTIN { get; set; }
}

型号 2

public class Consolidate
{
public string ProductCode { get; set; }
public int po_order_no { get; set; }
public string po_backorder_flag { get; set; }
}

在JSON中,我正在获取OrderItemAll(模型1)格式的数据,我想将其转换为 合并(模型 2)。 我环顾四周,我得到了一些映射器或自动映射器类,但我不想使用它。 谁能给我任何其他选择? 谢谢

假设您的类成员名称在两种类型中都相同,如下所示

public class Consolidate
{
public string ProductCode { get; set; }
public int po_order_no { get; set; }
public string po_backorder_flag { get; set; }
}

您可以像下面这样直接将其反序列化为Consolidate类型,其他memebrs将在反序列化过程中丢失。

JSonConvert.DeserializeObject<Consolidate>(jsonsdrializedData);

我建议你应该使用类似AutoMapper的东西.或者,你可以使用以下函数反序列化模型数据(json格式)

/// <summary>
/// Deserialise json to Object
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonData"></param>
/// <returns></returns>

public T ParseJSONtoObject<T>(string jsonData)
{           
T obj =  JsonConvert.DeserializeObject<T>(jsonData);
return obj;
}

调用上述方法将 JSON 反序列化为模型

var model=  ParseJSONtoObject<Consolidate>(jsonData);   

我会使用像AutoMapper这样的外部包。比它只是

Mapper.Initialize(c =>
{
c.CreateMap<OrderItemAll, Consolidate>();
});

当你想使用它时,它是

Mapper.Map<Consolidate>(myOrderItemAll);

如果您的字段名称不同,您仍然可以在中心位置添加一些自定义逻辑,您可以在指定字段映射方式的位置添加一些自定义逻辑。

最新更新