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 { /// /// 扩展.json序列反序列化 /// public static partial class JsonExtensions { /// /// 转成json对象 /// /// json字串 /// public static object ToJson(this string Json) { return Json == null ? null : JsonConvert.DeserializeObject(Json); } /// /// 转成json字串 /// /// 对象 /// public static string ToJson(this object obj) { var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }; return JsonConvert.SerializeObject(obj, timeConverter); } /// /// 转成json字串 /// /// 对象 /// 时间格式化 /// public static string ToJson(this object obj, string datetimeformats) { var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats }; return JsonConvert.SerializeObject(obj, timeConverter); } /// /// 字串反序列化成指定对象实体 /// /// 实体类型 /// 字串 /// public static T ToObject(this string Json) { return Json == null ? default(T) : JsonConvert.DeserializeObject(Json); } /// /// 字串反序列化成指定对象实体(列表) /// /// 实体类型 /// 字串 /// public static List ToList(this string Json) { return Json == null ? null : JsonConvert.DeserializeObject>(Json); } /// /// 字串反序列化成DataTable /// /// 字串 /// public static DataTable ToTable(this string Json) { return Json == null ? null : JsonConvert.DeserializeObject(Json); } /// /// 字串反序列化成linq对象 /// /// 字串 /// 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; } } }