zoukankan      html  css  js  c++  java
  • c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值

    转自 http://hi.baidu.com/wjinbd/item/c54d43d998beb33be3108fdd

    1 创建自己要用的类

    class stu
        {
            string _name;
            int _age;
            public string name
            {get{return _name;}
                set {_name=value;}
            }
            public int age
            {
                get { return _age; }
                set { _age = value; }
            }
        }

    2 使用反射方法

    public object jsonToObject(string jsonstr, Type objectType)//传递两个参数,一个是json字符串,一个是要创建的对象的类型
        {
            string[] jsons = jsonstr.Split(new char[] { ',' });//将json字符串分解成 “属性:值”数组
            for (int i = 0; i < jsons.Length; i++)
            {
                jsons[i] = jsons[i].Replace(""", "");
            }//去掉json字符串的双引号
            object obj = System.Activator.CreateInstance(typeof(stu)); //使用反射动态创建对象
            PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);//获得对象的所有public属性
    
            if (pis != null)//如果获得了属性
                foreach (PropertyInfo pi in pis)//针对每一个属性进行循环
                {
                    for (int i = 0; i < jsons.Length; i++)//检查json字符串中的所有“属性:值”类表
                    {
                        if (jsons[i].Split(new char[] { ':' })[0] == pi.Name)//如果对象的属性名称恰好和json中的属性名相同
                        {
                            Type proertyType = pi.PropertyType; //获得对象属性的类型
                            pi.SetValue(obj, Convert.ChangeType(jsons[i].Split(new char[] { ':' })[1], proertyType), null);
                            //将json字符串中的字符串类型的“值”转换为对象属性的类型,并赋值给对象属性
                        }
                    }
                }
            return obj;
        }

    3  调用

    String jsonstr = ""name":"zhang","age":"19"";
    stu aa = (stu)jsonToObject(jsonstr, typeof(stu));
  • 相关阅读:
    洛谷 P2958 [USACO09OCT]木瓜的丛林Papaya Jungle
    洛谷 P1400 塔
    10-2 集合之List
    主从数据库
    【单元测试】
    Pen Editor
    appendGrid
    动画
    JavaScript框架设计 第14章 动画引擎
    >>>
  • 原文地址:https://www.cnblogs.com/chusiping/p/3492552.html
Copyright © 2011-2022 走看看