zoukankan      html  css  js  c++  java
  • 数据转换帮助类

    一、引用

    1 using Newtonsoft.Json;
    2 using System;
    3 using System.Collections.Generic;
    4 using System.Data;
    5 using System.IO;
    6 using System.Linq;
    7 using System.Reflection;
    8 using System.Text;
    9 using System.Web.Script.Serialization;
    View Code

    二、使用

    1、Json

     1 /// <summary>
     2         /// 转换成json格式字符串
     3         /// </summary>
     4         /// <param name="obj"></param>
     5         /// <returns></returns>
     6         public static string Serialize(object obj)
     7         {
     8             JavaScriptSerializer js = new JavaScriptSerializer();
     9             string reponse = js.Serialize(obj);
    10             return reponse;
    11         } 
    12 
    13         /// <summary>
    14         /// JSON格式字符串转换成实体
    15         /// </summary>
    16         /// <typeparam name="T"></typeparam>
    17         /// <param name="str"></param>
    18         /// <returns></returns>
    19         public static T Deserialize<T>(string str)
    20         {
    21             JavaScriptSerializer js = new JavaScriptSerializer();
    22             T obj = js.Deserialize<T>(str);
    23             return obj;
    24         }
    25 
    26 /// <summary>
    27         /// 不循环引用的ToJson
    28         /// </summary>
    29         /// <param name="obj"></param>
    30         /// <returns></returns>
    31         public static string ToJsonString(this Object obj)
    32         {
    33             JsonSerializerSettings jsSettings = new JsonSerializerSettings();
    34             jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    35             return JsonConvert.SerializeObject(obj, jsSettings);
    36         } 
    37 
    38         /// <summary>
    39         /// 支持自我循环引用的ToJson
    40         /// </summary>
    41         /// <param name="obj"></param>
    42         /// <returns></returns>
    43         public static string ToJson(this object obj)
    44         {
    45             return JsonConvert.SerializeObject(obj);
    46         }
    47 
    48         /// <summary>
    49         /// 反json
    50         /// </summary>
    51         /// <typeparam name="Tresult">反json后的格式</typeparam>
    52         /// <param name="obj"></param>
    53         /// <returns></returns>
    54         public static Tresult FromJson<Tresult>(this string obj)
    55         {
    56             JavaScriptSerializer js = new JavaScriptSerializer();
    57             js.MaxJsonLength = Int32.MaxValue;
    58             Tresult t = js.Deserialize<Tresult>(obj);
    59             return JsonConvert.DeserializeObject<Tresult>(obj);
    60         } 
    View Code

    2、实体类

      1 /// <summary>
      2         /// 字典转为实体类
      3         /// </summary>
      4         /// <typeparam name="T"></typeparam>
      5         /// <param name="dic"></param>
      6         /// <returns></returns>
      7         public static T ConvertDic<T>(Dictionary<string, string> dic)
      8         {
      9             T model = Activator.CreateInstance<T>();
     10             PropertyInfo[] modelPro = model.GetType().GetProperties();
     11             if (modelPro.Length > 0 && dic.Any())
     12             {
     13                 foreach (var item in modelPro)
     14                 {
     15                     if (!dic.ContainsKey(item.Name)) continue;
     16                     if (item.PropertyType == typeof(string))
     17                     {
     18                         item.SetValue(model, dic[item.Name], null);
     19                     }
     20                     else if (item.PropertyType == typeof(Int32))
     21                     {
     22                         item.SetValue(model, Convert.ToInt32(dic[item.Name]), null);
     23                     }
     24                     else if (item.PropertyType == typeof(DateTime))
     25                     {
     26                         item.SetValue(model, Convert.ToDateTime(dic[item.Name]), null);
     27                     }
     28                 }
     29             }
     30             return model;
     31         } 
     32          
     33         /// <summary>  
     34         /// 填充对象列表:用DataTable填充实体类
     35         /// </summary>  
     36         public static List<T> FillModel<T>(DataTable dt, T model)
     37         {
     38             if (dt == null || dt.Rows.Count == 0)
     39             {
     40                 return null;
     41             }
     42             List<T> modelList = new List<T>();
     43             foreach (DataRow dr in dt.Rows)
     44             {  
     45                 for (int i = 0; i < dr.Table.Columns.Count; i++)
     46                 {
     47                     PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
     48                     if (propertyInfo != null && dr[i] != DBNull.Value)
     49                         propertyInfo.SetValue(model, dr[i], null);
     50                 }
     51 
     52                 modelList.Add(model);
     53             }
     54             return modelList;
     55         } 
     56          
     57         /// <summary>  
     58         /// 填充对象:用DataRow填充实体类
     59         /// </summary>  
     60         public static T FillModel<T>(DataRow dr,T model)
     61         {
     62             if (dr == null)
     63             {
     64                 return default(T);
     65             } 
     66             for (int i = 0; i < dr.Table.Columns.Count; i++)
     67             {
     68                 PropertyInfo propertyInfo = model.GetType().GetProperty(dr.Table.Columns[i].ColumnName);
     69                 if (propertyInfo != null && dr[i] != DBNull.Value)
     70                     propertyInfo.SetValue(model, dr[i], null);
     71             }
     72             return model;
     73         } 
     74 
     75         /// <summary>
     76         /// 实体类转换成DataSet
     77         /// </summary>
     78         /// <param name="modelList">实体类列表</param>
     79         /// <returns></returns>
     80         public static DataSet FillDataSet<T>(List<T> modelList)
     81         {
     82             if (modelList == null || modelList.Count == 0)
     83             {
     84                 return null;
     85             }
     86             else
     87             {
     88                 DataSet ds = new DataSet();
     89                 ds.Tables.Add(FillDataTable(modelList));
     90                 return ds;
     91             }
     92         }
     93           
     94         /// <summary>
     95         /// 实体类转换成DataTable
     96         /// </summary>
     97         /// <param name="modelList">实体类列表</param>
     98         /// <returns></returns>
     99         public static DataTable FillDataTable<T>(List<T> modelList)
    100         {
    101             if (modelList == null || modelList.Count == 0)
    102             {
    103                 return null;
    104             }
    105             DataTable dt = CreateData(modelList[0]);
    106 
    107             foreach (T model in modelList)
    108             {
    109                 DataRow dataRow = dt.NewRow();
    110                 foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
    111                 {
    112                     dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
    113                 }
    114                 dt.Rows.Add(dataRow);
    115             }
    116             return dt;
    117         }  
    118 
    119         /// <summary>
    120         /// 根据实体类得到表结构
    121         /// </summary>
    122         /// <param name="model">实体类</param>
    123         /// <returns></returns>
    124         private static DataTable CreateData<T>(T model)
    125         {
    126             DataTable dataTable = new DataTable(typeof(T).Name);
    127             foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
    128             {
    129                 dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
    130             }
    131             return dataTable;
    132         } 
    View Code

    3、其他

      1 /// <summary>
      2         /// 转换为标准的日期格式
      3         /// </summary> 
      4         /// <param name="obj"></param>
      5         /// <returns></returns>
      6         public static DateTime ToDateTime(this object obj)
      7         {
      8             return Convert.ToDateTime(obj);
      9         }  
     10         /// <summary>
     11         /// 转换为标准的十进制
     12         /// </summary> 
     13         /// <param name="obj"></param>
     14         /// <returns></returns>
     15         public static decimal ToDecimal(this object obj)
     16         {
     17             return Convert.ToDecimal(obj);
     18         }  
     19         /// <summary>
     20         /// 转换为标准的32位整数
     21         /// </summary> 
     22         /// <param name="obj"></param>
     23         /// <returns></returns>
     24         public static int ToInt(this object obj)
     25         {
     26             return Convert.ToInt32(obj);
     27         }  
     28         /// <summary>
     29         /// 转换为标准的64位整数
     30         /// </summary> 
     31         /// <param name="obj"></param>
     32         /// <returns></returns>
     33         public static long ToLong(this object obj)
     34         {
     35             return Convert.ToInt64(obj);
     36         }  
     37         /// <summary>
     38         /// 转换为布尔值
     39         /// </summary> 
     40         /// <param name="obj"></param>
     41         /// <returns></returns>
     42         public static bool ToBool(this object obj)
     43         {
     44             return Convert.ToBoolean(obj);
     45         }  
     46         /// <summary>
     47         /// 转换为双精度小数
     48         /// </summary> 
     49         /// <param name="obj"></param>
     50         /// <returns></returns>
     51         public static double ToDouble(this object obj)
     52         {
     53             return Convert.ToDouble(obj);
     54         } 
     55         /// <summary>
     56         /// 将数字转换为英语
     57         /// </summary>
     58         /// <param name="number"></param>
     59         /// <returns></returns>
     60         public static string NumberToEnglishString(int number)
     61         {
     62             if (number < 0) //暂不考虑负数
     63             {
     64                 return "";
     65             }
     66             if (number < 20) //0到19
     67             {
     68                 switch (number)
     69                 {
     70                     case 0:
     71                         return "zero";
     72                     case 1:
     73                         return "one";
     74                     case 2:
     75                         return "second";
     76                     case 3:
     77                         return "third";
     78                     case 4:
     79                         return "four";
     80                     case 5:
     81                         return "five";
     82                     case 6:
     83                         return "six";
     84                     case 7:
     85                         return "seven";
     86                     case 8:
     87                         return "eight";
     88                     case 9:
     89                         return "nine";
     90                     case 10:
     91                         return "ten";
     92                     case 11:
     93                         return "eleven";
     94                     case 12:
     95                         return "twelve";
     96                     case 13:
     97                         return "thirteen";
     98                     case 14:
     99                         return "fourteen";
    100                     case 15:
    101                         return "fifteen";
    102                     case 16:
    103                         return "sixteen";
    104                     case 17:
    105                         return "seventeen";
    106                     case 18:
    107                         return "eighteen";
    108                     case 19:
    109                         return "nineteen";
    110                     default:
    111                         return "";
    112                 }
    113             }
    114             if (number < 100) //20到99
    115             {
    116                 if (number % 10 == 0) //20,30,40,...90的输出
    117                 {
    118                     switch (number)
    119                     {
    120                         case 20:
    121                             return "twenty";
    122                         case 30:
    123                             return "thirty";
    124                         case 40:
    125                             return "forty";
    126                         case 50:
    127                             return "fifty";
    128                         case 60:
    129                             return "sixty";
    130                         case 70:
    131                             return "seventy";
    132                         case 80:
    133                             return "eighty";
    134                         case 90:
    135                             return "ninety";
    136                         default:
    137                             return "";
    138                     }
    139                 }
    140                 else //21.22,....99 思路:26=20+6
    141                 {
    142                     return string.Format("{0} {1}", NumberToEnglishString(10 * (number / 10)),
    143                         NumberToEnglishString(number % 10));
    144                 }
    145             }
    146             if (number < 1000) //100到999  百级
    147             {
    148                 if (number % 100 == 0)
    149                 {
    150                     return string.Format("{0} hundred", NumberToEnglishString(number / 100));
    151                 }
    152                 else
    153                 {
    154                     return string.Format("{0} hundred and {1}", NumberToEnglishString(number / 100),
    155                         NumberToEnglishString(number % 100));
    156                 }
    157             }
    158             if (number < 1000000) //1000到999999 千级
    159             {
    160                 if (number % 1000 == 0)
    161                 {
    162                     return string.Format("{0} thousand", NumberToEnglishString(number / 1000));
    163                 }
    164                 else
    165                 {
    166                     return string.Format("{0} thousand and {1}", NumberToEnglishString(number / 1000),
    167                         NumberToEnglishString(number % 1000));
    168                 }
    169             }
    170             if (number < 1000000000) //1000 000到999 999 999 百万级
    171             {
    172                 if (number % 1000 == 0)
    173                 {
    174                     return string.Format("{0} million", NumberToEnglishString(number / 1000000));
    175                 }
    176                 else
    177                 {
    178                     return string.Format("{0} million and {1}", NumberToEnglishString(number / 1000000),
    179                         NumberToEnglishString(number % 1000000));
    180                 }
    181             }
    182             if (number <= int.MaxValue) //十亿 级
    183             {
    184                 if (number % 1000000000 == 0)
    185                 {
    186                     return string.Format("{0} billion", NumberToEnglishString(number / 1000000000));
    187                 }
    188                 else
    189                 {
    190                     return string.Format("{0} billion and {1}", NumberToEnglishString(number / 1000000000),
    191                         NumberToEnglishString(number % 1000000000));
    192                 }
    193             }
    194             return "";
    195         }
    196   /// <summary>
    197         /// 文件转Base64
    198         /// </summary>
    199         /// <param name="filePath"></param>
    200         /// <returns></returns>
    201         public static string FileToBase64(string filePath)
    202         {
    203             FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
    204             byte[] buffur = new byte[fs.Length];
    205             fs.Read(buffur, 0, (int)fs.Length);
    206             return Convert.ToBase64String(buffur);
    207         }
    View Code
  • 相关阅读:
    react组件销毁中清理异步操作和取消请求
    只要一行代码,实现五种 CSS 经典布局
    vue中如何安装sass,sass安装命令
    每日总结
    每日总结
    每日总结
    每周总结
    每日总结
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/raniynight/p/9282515.html
Copyright © 2011-2022 走看看