C#实现DataTable,List和Json转换的方法
本文实例讲述了C#实现DataTable,List和Json转换的方法。分享给大家供大家参考,具体如下:
1.将DataTable或Ilist<>转换成JSON格式
usingSystem; usingSystem.Data; usingSystem.Text; usingSystem.Collections.Generic; usingSystem.Reflection; ///<summary> ///将DataTable或Ilist<>转换成JSON格式 ///</summary> publicclassToJson { publicToJson() { } //DataTable转成Json publicstaticstringDataTableToJson(stringjsonName,DataTabledt) { StringBuilderJson=newStringBuilder(); Json.Append("{\""+jsonName+"\":["); if(dt.Rows.Count>0) { for(inti=0;i<dt.Rows.Count;i++) { Json.Append("{"); for(intj=0;j<dt.Columns.Count;j++) { Json.Append("\""+dt.Columns[j].ColumnName.ToString()+"\":\""+dt.Rows[i][j].ToString()+"\""); if(j<dt.Columns.Count-1) { Json.Append(","); } } Json.Append("}"); if(i<dt.Rows.Count-1) { Json.Append(","); } } } Json.Append("]}"); returnJson.ToString(); } //List转成json publicstaticstringObjectToJson<T>(stringjsonName,IList<T>IL) { StringBuilderJson=newStringBuilder(); Json.Append("{\""+jsonName+"\":["); if(IL.Count>0) { for(inti=0;i<IL.Count;i++) { Tobj=Activator.CreateInstance<T>(); Typetype=obj.GetType(); PropertyInfo[]pis=type.GetProperties(); Json.Append("{"); for(intj=0;j<pis.Length;j++) { Json.Append("\""+pis[j].Name.ToString()+"\":\""+pis[j].GetValue(IL[i],null)+"\""); if(j<pis.Length-1) { Json.Append(","); } } Json.Append("}"); if(i<IL.Count-1) { Json.Append(","); } } } Json.Append("]}"); returnJson.ToString(); } }
2.各种数据集转换为json
///<summary> ///对象转换为Json字符串 ///</summary> ///<paramname="jsonObject">对象</param> ///<returns>Json字符串</returns> publicstaticstringToJson(objectjsonObject) { stringjsonString="{"; PropertyInfo[]propertyInfo=jsonObject.GetType().GetProperties(); for(inti=0;i<propertyInfo.Length;i++) { objectobjectValue=propertyInfo[i].GetGetMethod().Invoke(jsonObject,null); stringvalue=string.Empty; if(objectValueisDateTime||objectValueisGuid||objectValueisTimeSpan) { value="'"+objectValue.ToString()+"'"; } elseif(objectValueisstring) { value="'"+ToJson(objectValue.ToString())+"'"; } elseif(objectValueisIEnumerable) { value=ToJson((IEnumerable)objectValue); } else { value=ToJson(objectValue.ToString()); } jsonString+="\""+ToJson(propertyInfo[i].Name)+"\":"+value+","; } returnJson.DeleteLast(jsonString)+"}"; } ///<summary> ///对象集合转换Json ///</summary> ///<paramname="array">集合对象</param> ///<returns>Json字符串</returns> publicstaticstringToJson(IEnumerablearray) { stringjsonString="["; foreach(objectiteminarray) { jsonString+=Json.ToJson(item)+","; } returnJson.DeleteLast(jsonString)+"]"; } ///<summary> ///普通集合转换Json ///</summary> ///<paramname="array">集合对象</param> ///<returns>Json字符串</returns> publicstaticstringToArrayString(IEnumerablearray) { stringjsonString="["; foreach(objectiteminarray) { jsonString=ToJson(item.ToString())+","; } returnJson.DeleteLast(jsonString)+"]"; } ///<summary> ///删除结尾字符 ///</summary> ///<paramname="str">需要删除的字符</param> ///<returns>完成后的字符串</returns> privatestaticstringDeleteLast(stringstr) { if(str.Length>1) { returnstr.Substring(0,str.Length-1); } returnstr; } ///<summary> ///Datatable转换为Json ///</summary> ///<paramname="table">Datatable对象</param> ///<returns>Json字符串</returns> publicstaticstringToJson(DataTabletable) { stringjsonString="["; DataRowCollectiondrc=table.Rows; for(inti=0;i<drc.Count;i++) { jsonString+="{"; foreach(DataColumncolumnintable.Columns) { jsonString+="\""+ToJson(column.ColumnName)+"\":"; if(column.DataType==typeof(DateTime)||column.DataType==typeof(string)) { jsonString+="\""+ToJson(drc[i][column.ColumnName].ToString())+"\","; } else { jsonString+=ToJson(drc[i][column.ColumnName].ToString())+","; } } jsonString=DeleteLast(jsonString)+"},"; } returnDeleteLast(jsonString)+"]"; } ///<summary> ///DataReader转换为Json ///</summary> ///<paramname="dataReader">DataReader对象</param> ///<returns>Json字符串</returns> publicstaticstringToJson(DbDataReaderdataReader) { stringjsonString="["; while(dataReader.Read()) { jsonString+="{"; for(inti=0;i<dataReader.FieldCount;i++) { jsonString+="\""+ToJson(dataReader.GetName(i))+"\":"; if(dataReader.GetFieldType(i)==typeof(DateTime)||dataReader.GetFieldType(i)==typeof(string)) { jsonString+="\""+ToJson(dataReader[i].ToString())+"\","; } else { jsonString+=ToJson(dataReader[i].ToString())+","; } } jsonString=DeleteLast(jsonString)+"}"; } dataReader.Close(); returnDeleteLast(jsonString)+"]"; } ///<summary> ///DataSet转换为Json ///</summary> ///<paramname="dataSet">DataSet对象</param> ///<returns>Json字符串</returns> publicstaticstringToJson(DataSetdataSet) { stringjsonString="{"; foreach(DataTabletableindataSet.Tables) { jsonString+="\""+ToJson(table.TableName)+"\":"+ToJson(table)+","; } returnjsonString=DeleteLast(jsonString)+"}"; } ///<summary> ///String转换为Json ///</summary> ///<paramname="value">String对象</param> ///<returns>Json字符串</returns> publicstaticstringToJson(stringvalue) { if(string.IsNullOrEmpty(value)) { returnstring.Empty; } stringtemstr; temstr=value; temstr=temstr.Replace("{","{").Replace("}","}").Replace(":",":").Replace(",",",").Replace("[","【").Replace("]","】").Replace(";",";").Replace("\n","<br/>").Replace("\r",""); temstr=temstr.Replace("\t",""); temstr=temstr.Replace("'","\'"); temstr=temstr.Replace(@"\",@"\\"); temstr=temstr.Replace("\"","\"\""); returntemstr; }
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#窗体操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。