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#程序设计有所帮助。