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

时间:2018-02-15 06:45:33

标签: c#

我有2个模特

Model1 = OrderItemAll

 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(Model1)格式的数据,我希望将其转换为 合并(Model2)。 我环顾四周,我得到了一些Mapper或AutoMapper类,但我不想使用它。 任何人都可以给我任何其他选择吗? 谢谢

3 个答案:

答案 0 :(得分:1)

鉴于您的类成员名称在以下两种类型中都是相同的

Consolidate

您可以直接将其反序列化为JSonConvert.DeserializeObject<Consolidate>(jsonsdrializedData); 类型,如下所示,其他memebrs将在反序列化过程中迷失。

{{1}}

答案 1 :(得分:0)

我建议您使用类似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);   

答案 2 :(得分:0)

我会选择像AutoMapper这样的外部软件包。比它只是

select

当你想要使用它时

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

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