由于做项目需要,需要操作json数据,所以从网上找了相关的代码
public class ConvertJson{#region 私有方法////// 过滤特殊字符/// private static string String2Json(String s){StringBuilder sb = new StringBuilder();for (int i = 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;}}return sb.ToString();}////// 格式化字符型、日期型、布尔型/// private static string 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/// public static string ListToJson(IList list){object obj = list[0];return ListToJson (list, obj.GetType().Name);}/// /// List转换成Json /// public static string ListToJson(IList 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 ();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 /// /// 对象 ///Json字符串 public static string ToJson(object jsonObject){string jsonString = "{ ";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() + "'";}else if (objectValue is string){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);return jsonString + "}";}#endregion#region 对象集合转换Json////// 对象集合转换Json /// /// 集合对象 ///Json字符串 public static string ToJson(IEnumerable array){string jsonString = "[";foreach (object item in array){jsonString += ToJson(item) + ",";}jsonString.Remove(jsonString.Length - 1, jsonString.Length);return jsonString + "]";}#endregion#region 普通集合转换Json////// 普通集合转换Json /// /// 集合对象 ///Json字符串 public static string ToArrayString(IEnumerable array){string jsonString = "[";foreach (object item in array){jsonString = ToJson(item.ToString()) + ",";}jsonString.Remove(jsonString.Length - 1, jsonString.Length);return jsonString + "]";}#endregion#region DataSet转换为Json////// DataSet转换为Json /// /// DataSet对象 ///Json字符串 public static string ToJson(DataSet dataSet){string jsonString = "{ ";foreach (DataTable table in dataSet.Tables){jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ",";}jsonString = jsonString.TrimEnd(',');return jsonString + "}";}#endregion#region Datatable转换为Json////// Datatable转换为Json /// /// Datatable对象 ///Json字符串 public static string 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 /// public static string 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 /// /// DataReader对象 ///Json字符串 public static string 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}
由于没有详细的测试,大家看着使用。
出处:http://www.cnblogs.com/moxuanshang/p/4645867.html