php data类型转换,【原】超简单类型转换(DataTable

【原】超简单类型转换(DataTable -- List/JSON)的实现 背景: 开发工作中经常需要类型的转换,比如DataTable转换为List、或是DataTable转换为JSON等等, 每次都重复的写相同的代码,比如:把实体类的字段属性一个一个的列出来,从DataTabel中把值取出来赋

【原】超简单类型转换(DataTable --> List/JSON)的实现

背景:

开发工作中经常需要类型的转换,比如DataTable转换为List、或是DataTable转换为JSON等等,

每次都重复的写相同的代码,比如:把实体类的字段属性一个一个的列出来,从DataTabel中把值取出来赋上,

真的好麻烦 (*=*)

思考:

1)DataTable转换为List,香港空间,主要是使用反射,遍历实体类的属性,和DataTabel中的列进行对比并赋值

2)DataTable转换为JSON,主要是拼接JSON串

实践:

参考了网上很多前辈的思路和实现,制作了一个ConvertHelper类,感谢各位前辈 ^_^

762ee1147e56fba5bddb82464cf642bc.png

转换辅助类ConvertHelper代码如下:

ConvertHelper

转换辅助类ConvertHelperwhere T : new()6 {DataTable-->ListIListDataTableConvertToList(DataTable dt)13 {14

IListts = new List();Type type = typeof(T);创建类型的对象(用于比较用)20

//object convertObj = Activator.CreateInstance(type, null);反射取得类型实例的属性数组PropertyInfo[] propertys =type.GetProperties();(DataRow dr indt.Rows)27 {28

//创建类型的对象(用于赋值用)T outputObj = newT();(PropertyInfo pi inpropertys)33 {(dt.Columns.Contains(pi.Name))36 {37

if (!pi.CanWrite)38 {39

continue;40 }value =dr[pi.Name];(value !=DBNull.Value)46 {pi.SetValue(outputObj, value, null);49 }50 }51 }ts.Add((T)outputObj);55 }ts;58 }DataTable-->JsonDataTableConvertToJson(DataTable dt)66 {67

StringBuilder jsonBuilder = newStringBuilder();jsonBuilder.Append();71 jsonBuilder.Append(dt.TableName););73

for (int i = 0; i < dt.Rows.Count; i++)74 {);76

for (int j = 0; j < dt.Columns.Count; j++)77 {);79 jsonBuilder.Append(dt.Columns[j].ColumnName););81 jsonBuilder.Append(dt.Rows[i][j].ToString()););83 }84

jsonBuilder.Remove(jsonBuilder.Length - 1, 1););86 }87

jsonBuilder.Remove(jsonBuilder.Length - 1, 1);););jsonBuilder.ToString();92 }DataSet-->JsonDataSetConvertToJson(DataSet ds)100 {101

StringBuilder json = newStringBuilder();(DataTable dt inds.Tables)104 {json.Append();107 json.Append(dt.TableName););109 json.Append(DataTableConvertToJson(dt)););111 }json.ToString();114 }115

}

如何使用呢?

很方便的,先定义一个实体类UserInfo

UserInfo

1 /// 2

/// 用户信息实体

3

///

4

public class UserInfo

5

{

6

/// 7

/// 用户编号

8

///

9

public int UserID { get; set; }

10

11

/// 12

/// 用户姓名

13

///

14

public string UserName { get; set; }

15

16

/// 17

/// 用户薪资

18

///

19

public decimal Salary { get; set; }

20

}

再定义一个方法填充一些数据模拟DataTable

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值