C# Json 解析,针对数字开头变量Json字符串转模型(Model)

时间:2021-07-05 16:41:12   收藏:0   阅读:0
namespace 解析数字开头的变量JSON
{
    class Program
    {
        static void Main(string[] args)
        {
            string strJson = "{\"1st_attempt\":\"2021-02-09 16:32:15\",\"2nd_attempt\":\"2021-02-09 16:33:18\"}";
            var objModel = JsonDictionaryModel<ResModels>(strJson);
        }
 
        public class ResModels
        {
            public string _1st_attempt { get; set; }
            public string _2nd_attempt { get; set; }
        }


        public static T JsonDictionaryModel<T>(string strJson) 
        {
            Dictionary<string, object> ProductDetailList = JsonConvert.DeserializeObject<Dictionary<string, object>>(strJson);
            return ParseDictionaryToModel<T>(ProductDetailList);
        }
        public static T ParseDictionaryToModel<T>(Dictionary<string, object> dict)
        {
            T obj = default(T);
            obj = Activator.CreateInstance<T>();
            //根据Key值设定 Columns
            foreach (KeyValuePair<string, object> item in dict)
            {
                PropertyInfo prop = obj.GetType().GetProperty(item.Key);
                if (Equals(prop, null)) 
                {
                    prop = obj.GetType().GetProperty("_"+item.Key);
                }
                if (!Equals(item.Value,null))
                {
                    object value = item.Value;
                    //Nullable 获取Model类字段的真实类型
                    Type itemType = Nullable.GetUnderlyingType(prop.PropertyType) == null ? prop.PropertyType : Nullable.GetUnderlyingType(prop.PropertyType);
                    //根据Model类字段的真实类型进行转换
                    prop.SetValue(obj, Convert.ChangeType(value, itemType), null);
                }
            }
            return obj;
        }
    }
}

 https://www.cnblogs.com/volts0302/p/5195086.html

https://blog.csdn.net/weixin_33853794/article/details/92936314

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!