list集合,dataTable 转json null转空字符串,时间格式
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Utils { public class NewtonsoftHelper { public static string ToJson<T>(T obj) { if (obj == null) return null; return JsonConvert.SerializeObject(obj); } public static T ToObject<T>(string jsonString) { if (string.IsNullOrEmpty(jsonString)) return default(T); return JsonConvert.DeserializeObject<T>(jsonString); } #region 新加的方法 /// <summary> /// 对象转json null转空字符串,时间格式 /// </summary> /// <param name="item"></param> /// <returns></returns> public static string ItemToJson(object item) { Dictionary<string, object> row = new Dictionary<string, object>(); var propertyInfos = item.GetType().GetProperties(); foreach (var propertyInfo in propertyInfos) { object result = propertyInfo.GetValue(item); object value = result == null ? "" : result; row.Add(propertyInfo.Name, value); } var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore,//这种方式指定忽略循环引用,是在指定循环级数后忽略,返回的json数据中还是有部分循环的数据 DateFormatString = "yyyy-MM-dd HH:mm:ss", //ContractResolver = new CamelCasePropertyNamesContractResolver(),//json中属性开头字母小写的驼峰命名 }; return JsonConvert.SerializeObject(row, settings); } /// <summary> /// list转json null转空字符串,时间格式 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <returns></returns> public static string ListToJson<T>(List<T> list) { List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); Dictionary<string, object> row; foreach (var item in list) { row = new Dictionary<string, object>(); var propertyInfos = item.GetType().GetProperties(); foreach (var propertyInfo in propertyInfos) { object result = propertyInfo.GetValue(item); object value = result == null ? "" : result; row.Add(propertyInfo.Name, value); } rows.Add(row); } var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore,//这种方式指定忽略循环引用,是在指定循环级数后忽略,返回的json数据中还是有部分循环的数据 DateFormatString = "yyyy-MM-dd HH:mm:ss", //ContractResolver = new CamelCasePropertyNamesContractResolver(),//json中属性开头字母小写的驼峰命名 }; return JsonConvert.SerializeObject(rows, settings); } /// <summary> /// DataTable转json null转空字符串,时间格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string DataTableToJson(DataTable dt) { List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); Dictionary<string, object> row; foreach (DataRow dr in dt.Rows) { row = new Dictionary<string, object>(); foreach (DataColumn col in dt.Columns) { object value = dr[col]== Convert.DBNull ? "" : dr[col]; row.Add(col.ColumnName, value); } rows.Add(row); } var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore,//这种方式指定忽略循环引用,是在指定循环级数后忽略,返回的json数据中还是有部分循环的数据 DateFormatString = "yyyy-MM-dd HH:mm:ss", //ContractResolver = new CamelCasePropertyNamesContractResolver(),//json中属性开头字母小写的驼峰命名 }; return JsonConvert.SerializeObject(rows, settings); } #endregion } }