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
    }
}

 

posted @ 2023-10-24 16:49  cclon  阅读(51)  评论(0编辑  收藏  举报