C 任意类型数据转JSON格式

更新时间:2023-07-25 02:18:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C# 任意类型数据转JSON格式

///<summary>

/// List转成json

///</summary>

///<typeparam name="T"></typeparam>

///<param name="jsonName"></param>

///<param name="list"></param>

///<returns></returns>

publicstaticstringListToJson<T>(IList<T> list, stringjsonName) {

StringBuilderJson = newStringBuilder();

if (string.IsNullOrEmpty(jsonName))

jsonName = list[0].GetType().Name;

Json.Append("{\"" + jsonName + "\":[");

if (list.Count>0)

{

for (inti = 0; i<list.Count; i++)

{

T obj = Activator.CreateInstance<T>();

PropertyInfo[] pi = obj.GetType().GetProperties();

Json.Append("{");

for (int j = 0; j <pi.Length; j++)

{

Type type = pi[j].GetValue(list[i], null).GetType();

Json.Append("\"" + pi[j].Name.ToString() + "\":" +

StringFormat(pi[j].GetValue(list[i], null).ToString(), type));

if (j <pi.Length - 1)

{

Json.Append(",");

}

}

Json.Append("}");

if (i<list.Count - 1)

{

Json.Append(",");

}

}

}

Json.Append("]}");

returnJson.ToString();

///<summary>

/// List转成json

///</summary>

///<typeparam name="T"></typeparam>

///<param name="list"></param>

///<returns></returns>

publicstaticstringListToJson<T>(IList<T> list)

{

objectobj = list[0];

returnListToJson<T>(list, obj.GetType().Name);

}

///<summary>

/// 对象转换为Json字符串

///</summary>

///<param name="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);

string value = 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 + ","; }

jsonString.Remove(jsonString.Length - 1, jsonString.Length); returnjsonString + "}";

}

///<summary>

/// 对象集合转换Json

///</summary>

///<param name="array">集合对象</param>

///<returns>Json字符串</returns>

publicstaticstringToJson(IEnumerable array)

{

stringjsonString = "[";

foreach (object item in array)

{

jsonString += ToJson(item) + ",";

}

jsonString.Remove(jsonString.Length - 1, jsonString.Length); returnjsonString + "]";

}

///<summary>

/// 普通集合转换Json

///</summary>

///<param name="array">集合对象</param>

///<returns>Json字符串</returns>

publicstaticstringToArrayString(IEnumerable array)

{

stringjsonString = "[";

foreach (object item in array)

{

jsonString = ToJson(item.ToString()) + ",";

}

jsonString.Remove(jsonString.Length - 1, jsonString.Length); returnjsonString + "]";

}

///<summary>

///Datatable转换为Json

///</summary>

///<param name="table">Datatable对象</param>

///<returns>Json字符串</returns>

publicstaticstringToJson(DataTabledt)

{

StringBuilderjsonString = newStringBuilder();

jsonString.Append("[");

DataRowCollectiondrc = dt.Rows;

for (inti = 0; i<drc.Count; i++)

{

jsonString.Append("{");

for (int j = 0; j <dt.Columns.Count; j++)

{

stringstrKey = dt.Columns[j].ColumnName;

stringstrValue = drc[i][j].ToString();

Type type = dt.Columns[j].DataType;

jsonString.Append("\"" + strKey + "\":");

strValue = StringFormat(strValue, type);

if (j <dt.Columns.Count - 1)

{

jsonString.Append(strValue + ",");

}

else

{

jsonString.Append(strValue);

}

}

jsonString.Append("},");

}

jsonString.Remove(jsonString.Length - 1, 1);

jsonString.Append("]");

returnjsonString.ToString();

}

///<summary>

///DataTable转成Json

///</summary>

///<param name="jsonName"></param>

///<param name="dt"></param>

///<returns></returns>

publicstaticstringToJson(DataTabledt, stringjsonName)

{

StringBuilderJson = newStringBuilder();

if (string.IsNullOrEmpty(jsonName))

jsonName = dt.TableName;

Json.Append("{\"" + jsonName + "\":[");

if (dt.Rows.Count>0)

{

for (inti = 0; i<dt.Rows.Count; i++)

{

Json.Append("{");

for (int j = 0; j <dt.Columns.Count; j++)

{

Type type = dt.Rows[i][j].GetType();

Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));

if (j <dt.Columns.Count - 1)

{

Json.Append(",");

}

}

Json.Append("}");

if (i<dt.Rows.Count - 1)

{

Json.Append(",");

}

}

}

Json.Append("]}");

returnJson.ToString();

}

///<summary>

///DataReader转换为Json

///</summary>

///<param name="dataReader">DataReader对象</param>

///<returns>Json字符串</returns>

publicstaticstringToJson(DbDataReaderdataReader)

{

StringBuilderjsonString = newStringBuilder();

jsonString.Append("[");

while (dataReader.Read())

{

jsonString.Append("{");

for (inti = 0; i<dataReader.FieldCount; i++)

{

Type type = dataReader.GetFieldType(i);

stringstrKey = dataReader.GetName(i);

stringstrValue = dataReader[i].ToString();

jsonString.Append("\"" + strKey + "\":");

strValue = StringFormat(strValue, type);

if (i<dataReader.FieldCount - 1)

{

jsonString.Append(strValue + ",");

}

else

{

jsonString.Append(strValue);

}

}

jsonString.Append("},");

}

dataReader.Close();

jsonString.Remove(jsonString.Length - 1, 1);

jsonString.Append("]");

returnjsonString.ToString();

}

///<summary>

///DataSet转换为Json

///</summary>

///<param name="dataSet">DataSet对象</param>

///<returns>Json字符串</returns>

publicstaticstringToJson(DataSetdataSet)

{

stringjsonString = "{";

foreach (DataTable table indataSet.Tables)

{

jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ","; }

jsonString = jsonString.TrimEnd(',');

returnjsonString + "}";

}

///<summary>

/// 过滤特殊字符

///</summary>

///<param name="s"></param>

///<returns></returns>

privatestaticstring String2Json(String s)

{

StringBuildersb = newStringBuilder();

for (inti = 0; i<s.Length; i++)

{

char c = s.ToCharArray()[i];

switch (c)

{

case'\"':

sb.Append("\\\""); break;

case'\\':

sb.Append("\\\\"); break;

case'/':

sb.Append("\\/"); break;

case'\b':

sb.Append("\\b"); break;

case'\f':

sb.Append("\\f"); break;

case'\n':

sb.Append("\\n"); break;

case'\r':

sb.Append("\\r"); break;

case'\t':

sb.Append("\\t"); break;

default:

sb.Append(c); break;

}

}

returnsb.ToString();

}

///<summary>

/// 格式化字符型、日期型、布尔型

///</summary>

///<param name="str"></param>

///<param name="type"></param>

///<returns></returns>

privatestaticstringStringFormat(stringstr, Type type) {

if (type == typeof(string))

{

str = String2Json(str);

str = "\"" + str + "\"";

}

elseif (type == typeof(DateTime))

{

str = "\"" + str + "\"";

}

elseif (type == typeof(bool))

{

str = str.ToLower(); }

return

str;

}

本文来源:https://www.bwwdw.com/article/72lm.html

Top