using HighWayIot.Log4net; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Script.Serialization; using System.Xml.Linq; namespace HighWayIot.Common { public class JsonChange { private static readonly Lazy lazy = new Lazy(() => new JsonChange()); public static JsonChange Instance { get { return lazy.Value; } } private LogHelper log = LogHelper.Instance; private JsonChange() { } /// /// Model 实体转json /// /// 可以是单个实体,也可是实体集(即:ToList()) /// public string ModeToJson(object Model) { string str = ""; JavaScriptSerializer serializer = new JavaScriptSerializer(); try { str = serializer.Serialize(Model); } catch (Exception ex) { log.Error("Model转Json异常",ex); } return str; } /// /// json实体转Model /// /// /// /// public T JsonToMode(string jsonStr) { T info = default(T); JavaScriptSerializer serializer = new JavaScriptSerializer(); try { info = serializer.Deserialize(jsonStr); } catch (Exception ex) { log.Error("Json转Model异常" ,ex); } return info; } /// /// object转dictionary /// /// /// public Dictionary objectToDictionary(string jsonData) { Dictionary result = new Dictionary(); var inf = JsonConvert.DeserializeObject>(jsonData); foreach (KeyValuePair item in inf) { if (item.Value != null) { var type = item.Value.GetType(); if (type == typeof(JObject)) { var info = objectToDictionary(JsonConvert.SerializeObject(item.Value)); foreach (KeyValuePair ite in info) { result.Add(ite.Key, ite.Value); } continue; } else if (type == typeof(JArray)) { JArray array = (JArray)item.Value; var info = objectToDictionary(JsonConvert.SerializeObject(array[0])); foreach (KeyValuePair ite in info) { result.Add(item.Key + ite.Key, ite.Value); } continue; } } result.Add(item.Key, item.Value); } return result; } } }