C# 转换Json类,
![]()
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Reflection;
using System.Collections;
using System.Data.Common;
namespace DotNet.Utilities
{
ConvertJson
{
#region 私有方法
过滤特殊字符
String2Json(String s)
{
StringBuilder sb =
new StringBuilder();
for (
int i =
0; i < s.Length; i++
)
{
char c =
s.ToCharArray()[i];
switch (c)
{
:
sb.Append();
break;
:
sb.Append();
break;
:
sb.Append();
break;
:
sb.Append();
break;
:
sb.Append();
break;
:
sb.Append();
break;
:
sb.Append();
break;
:
sb.Append();
break;
default:
sb.Append(c); break;
}
}
return sb.ToString();
}
格式化字符型、日期型、布尔型
StringFormat(
string str, Type type)
{
if (type ==
typeof(
string))
{
str =
String2Json(str);
str = + str +
;
}
else if (type ==
typeof(DateTime))
{
str = + str +
;
}
else if (type ==
typeof(
bool))
{
str =
str.ToLower();
}
else if (type !=
typeof(
string) &&
string.IsNullOrEmpty(str))
{
str = + str +
;
}
return str;
}
#endregion
#region List转换成Json
List转换成Json
ListToJson<T>(IList<T>
list)
{
object obj = list[
0];
return ListToJson<T>
(list, obj.GetType().Name);
}
List转换成Json
ListToJson<T>(IList<T> list,
string jsonName)
{
StringBuilder Json =
new StringBuilder();
if (
string.IsNullOrEmpty(jsonName)) jsonName = list[
0].GetType().Name;
Json.Append(+ jsonName +
);
if (list.Count >
0)
{
for (
int i =
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();
return Json.ToString();
}
#endregion
#region 对象转换为Json
对象转换为Json
ToJson(
object jsonObject)
{
;
PropertyInfo[] propertyInfo =
jsonObject.GetType().GetProperties();
for (
int i =
0; i < propertyInfo.Length; i++
)
{
object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject,
null);
string value =
string.Empty;
if (objectValue
is DateTime || objectValue
is Guid || objectValue
is TimeSpan)
{
value = + objectValue.ToString() +
;
}
)
{
value = + ToJson(objectValue.ToString()) +
;
}
else if (objectValue
is IEnumerable)
{
value =
ToJson((IEnumerable)objectValue);
}
else
{
value =
ToJson(objectValue.ToString());
}
jsonString += + ToJson(propertyInfo[i].Name) + + value +
;
}
jsonString.Remove(jsonString.Length -
1, jsonString.Length);
;
}
#endregion
#region 对象集合转换Json
对象集合转换Json
ToJson(IEnumerable array)
{
;
foreach (
object item
in array)
{
jsonString += ToJson(item) +
;
}
jsonString.Remove(jsonString.Length -
1, jsonString.Length);
;
}
#endregion
#region 普通集合转换Json
普通集合转换Json
ToArrayString(IEnumerable array)
{
;
foreach (
object item
in array)
{
jsonString = ToJson(item.ToString()) +
;
}
jsonString.Remove(jsonString.Length -
1, jsonString.Length);
;
}
#endregion
#region DataSet转换为Json
DataSet转换为Json
ToJson(DataSet dataSet)
{
;
foreach (DataTable table
in dataSet.Tables)
{
jsonString += + table.TableName + + ToJson(table) +
;
}
jsonString = jsonString.TrimEnd(
);
;
}
#endregion
#region Datatable转换为Json
Datatable转换为Json
ToJson(DataTable dt)
{
StringBuilder jsonString =
new StringBuilder();
jsonString.Append();
DataRowCollection drc =
dt.Rows;
for (
int i =
0; i < drc.Count; i++
)
{
jsonString.Append();
for (
int j =
0; j < dt.Columns.Count; j++
)
{
string strKey =
dt.Columns[j].ColumnName;
string strValue =
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();
return jsonString.ToString();
}
DataTable转换为Json
ToJson(DataTable dt,
string jsonName)
{
StringBuilder Json =
new StringBuilder();
if (
string.IsNullOrEmpty(jsonName)) jsonName =
dt.TableName;
Json.Append(+ jsonName +
);
if (dt.Rows.Count >
0)
{
for (
int i =
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();
return Json.ToString();
}
#endregion
#region DataReader转换为Json
DataReader转换为Json
ToJson(DbDataReader dataReader)
{
StringBuilder jsonString =
new StringBuilder();
jsonString.Append();
while (dataReader.Read())
{
jsonString.Append();
for (
int i =
0; i < dataReader.FieldCount; i++
)
{
Type type =
dataReader.GetFieldType(i);
string strKey =
dataReader.GetName(i);
string strValue =
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();
return jsonString.ToString();
}
#endregion
}
}
ConvertJson