我有 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);
如果您的字段名称不同,您仍然可以在中心位置添加一些自定义逻辑,您可以在指定字段映射方式的位置添加一些自定义逻辑。