| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | using Newtonsoft.Json;using Newtonsoft.Json.Converters;using Newtonsoft.Json.Linq;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Text.RegularExpressions;namespace WCS_Client{    /// <summary>    /// 扩展.json序列反序列化    /// </summary>    public static partial class JsonExtensions    {        /// <summary>        /// 转成json对象        /// </summary>        /// <param name="Json">json字串</param>        /// <returns></returns>        public static object ToJson(this string Json)        {            return Json == null ? null : JsonConvert.DeserializeObject(Json);        }        /// <summary>        /// 转成json字串        /// </summary>        /// <param name="obj">对象</param>        /// <returns></returns>        public static string ToJson(this object obj)        {            var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };            return JsonConvert.SerializeObject(obj, timeConverter);        }        /// <summary>        /// 转成json字串        /// </summary>        /// <param name="obj">对象</param>        /// <param name="datetimeformats">时间格式化</param>        /// <returns></returns>        public static string ToJson(this object obj, string datetimeformats)        {            var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };            return JsonConvert.SerializeObject(obj, timeConverter);        }        /// <summary>        /// 字串反序列化成指定对象实体        /// </summary>        /// <typeparam name="T">实体类型</typeparam>        /// <param name="Json">字串</param>        /// <returns></returns>        public static T ToObject<T>(this string Json)        {            return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json);        }        /// <summary>        /// 字串反序列化成指定对象实体(列表)        /// </summary>        /// <typeparam name="T">实体类型</typeparam>        /// <param name="Json">字串</param>        /// <returns></returns>        public static List<T> ToList<T>(this string Json)        {            return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json);        }        /// <summary>        /// 字串反序列化成DataTable        /// </summary>        /// <param name="Json">字串</param>        /// <returns></returns>        public static DataTable ToTable(this string Json)        {            return Json == null ? null : JsonConvert.DeserializeObject<DataTable>(Json);        }        /// <summary>        /// 字串反序列化成linq对象        /// </summary>        /// <param name="Json">字串</param>        /// <returns></returns>        public static JObject ToJObject(this string Json)        {            return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", ""));        }        public static DataTable GetAttributesDataTable(this object obj)        {            var tb = new DataTable(obj.GetType().Name);            tb.Columns.Add("信号说明", typeof(string));            tb.Columns.Add("信号名称", typeof(string));            tb.Columns.Add("信号值", typeof(string));            Type t = obj.GetType();            //属性遍历            foreach (System.Reflection.PropertyInfo pi in t.GetProperties())            {                AttributeCollection attributes = TypeDescriptor.GetProperties(t)[pi.Name].Attributes;                DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];                string describle = myAttribute.Description;                string proname = pi.Name;                var abc = pi.GetValue(obj, null);                var values = new object[3];                values[0] = describle;                values[1] = proname;                switch (proname)                {                    case "TaskID":                        values[1] = "任务号";                        break;                    case "TaskType":                        values[1] = "任务类型";                        break;                    case "WorkMode":                        values[1] = "运行模式";                        break;                    case "SystemStatus":                        values[1] = "运行状态";                        break;                    case "StartPosition":                        values[1] = "起始地址";                        break;                    case "PH_Status":                        values[1] = "光电信号";                        break;                    case "DestPosition":                        values[1] = "目标地址";                        break;                    //case "ACT_V":                    //    values[1] = "实际速度";                    //    break;                    case "GOODSSTART":                        values[1] = "起始地址";                        break;                    case "GOODSEND":                        values[1] = "目标地址";                        break;                    case "REQUEST":                        values[1] = "请求";                        break;                    case "RES1":                        values[1] = "手动入库";                        break;                    case "HEIGHT":                        values[1] = "高度";                        break;                    case "GOODSCODE":                        values[1] = "货物编码";                        break;                    case "GOODSTYPE":                        values[1] = "货物类型";                        break;                    case "GOODSSIZE":                        values[1] = "货物尺寸";                        break;                    case "PH_STATUS":                        values[1] = "光电信号";                        break;                    case "TASKNUM":                        values[1] = "任务号";                        break;                }                string P_regex = "^[\u4E00-\u9FA5]{0,}$";                var match = Regex.IsMatch(values[1].ToString(), P_regex, RegexOptions.IgnoreCase);                if (!match) continue;                values[2] = abc;                tb.Rows.Add(values);            }            return tb;        }    }}
 |