page contents

C# 将JObject对象返回实体对象

本文讲述了C# 将JObject对象返回实体对象!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-10-zvsBEXFu6359e2fd5be83.png本文讲述了C# 将JObject对象返回实体对象!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

C# 将object对象转换为实体对象.一共两种方法.

第一种方法,代码如下:

/// <summary>
/// 将object对象转换为实体对象
/// </summary>
/// <typeparam name="T">实体对象类名</typeparam>
/// <param name="asObject">object对象</param>
/// <returns></returns>
private T ConvertObject<T>(object asObject) where T : new()
{
    //创建实体对象实例
    var t = Activator.CreateInstance<T>();
    if (asObject != null)
    {
        Type type = asObject.GetType();
        //遍历实体对象属性
        foreach (var info in typeof(T).GetProperties())
        {
            object obj = null;
            //取得object对象中此属性的值
            var val = type.GetProperty(info.Name)?.GetValue(asObject);
            if (val != null)
            {
                //非泛型
                if (!info.PropertyType.IsGenericType)
                    obj = Convert.ChangeType(val, info.PropertyType);
                else//泛型Nullable<>
                {
                    Type genericTypeDefinition = info.PropertyType.GetGenericTypeDefinition();
                    if (genericTypeDefinition == typeof(Nullable<>))
                    {
                        obj = Convert.ChangeType(val, Nullable.GetUnderlyingType(info.PropertyType));
                    }
                    else
                    {
                        obj = Convert.ChangeType(val, info.PropertyType);
                    }
                }
                info.SetValue(t, obj, null);
            }
        }
    }
    return t;
}

第二种方法

需引用

程序集:System.Web.Extensions.dll

命名空间:System.Web.Script.Serialization.

代码如下:

 /// <summary>
 /// 将object对象转换为实体对象
 /// </summary>
 /// <typeparam name="T">实体对象类名</typeparam>
 /// <param name="asObject">object对象</param>
 /// <returns></returns>
 public static T ConvertObject<T>(object asObject) where T : new()
 {
     var serializer = new JavaScriptSerializer();
     //将object对象转换为json字符
     var json = serializer.Serialize(asObject);
     //将json字符转换为实体对象
     var t = serializer.Deserialize<T>(json);
     return t;
 }

调用方式:

/// <summary>
/// test
/// </summary>
public void test()
{
    var obj = new {
        id=1,name="张三",sex=1,age=22
    };
    //转换
    user userModel = ConvertObject<user>(obj);
}

/// <summary>
/// 用户
/// </summary>
public class user
{
    /// <summary>
    /// 编号
    /// </summary>
    public int id { set; get; }
    /// <summary>
    /// 姓名
    /// </summary>
    public string name { set; get; }
    /// <summary>
    /// 性别
    /// </summary>
    public int sex { set; get; }
    /// <summary>
    /// 年龄
    /// </summary>
    public int age { set; get; }
}

是不是很简单?

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

attachments-2022-10-kwwbZ9WG6347756cbf77c.jpg

  • 发表于 2022-10-27 09:46
  • 阅读 ( 2264 )
  • 分类:C/C++开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1046 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章