本文实例讲述了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#实现DataTable,List和Json转换的方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/907507.html