|
|
using HighWayIot.Log4net;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Web.Script.Serialization;
|
|
|
|
|
|
namespace HighWayIot.Common
|
|
|
{
|
|
|
public class JsonChange
|
|
|
{
|
|
|
|
|
|
private static readonly Lazy<JsonChange> lazy = new Lazy<JsonChange>(() => new JsonChange());
|
|
|
public static JsonChange Instance
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
return lazy.Value;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private LogHelper log = LogHelper.Instance;
|
|
|
|
|
|
private JsonChange() { }
|
|
|
|
|
|
/// <summary>
|
|
|
/// Model 实体转json
|
|
|
/// </summary>
|
|
|
/// <param name="Model">可以是单个实体,也可是实体集(即:ToList())</param>
|
|
|
/// <returns></returns>
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// json实体转Model
|
|
|
/// </summary>
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
/// <param name="jsonStr"></param>
|
|
|
/// <returns></returns>
|
|
|
public T JsonToMode<T>(string jsonStr)
|
|
|
{
|
|
|
T info = default(T);
|
|
|
JavaScriptSerializer serializer = new JavaScriptSerializer();
|
|
|
try
|
|
|
{
|
|
|
info = serializer.Deserialize<T>(jsonStr);
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
log.Error("Json转Model异常", ex);
|
|
|
}
|
|
|
return info;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// object转dictionary
|
|
|
/// </summary>
|
|
|
/// <param name="jsonData"></param>
|
|
|
/// <returns></returns>
|
|
|
public Dictionary<string, object> objectToDictionary(string jsonData)
|
|
|
{
|
|
|
Dictionary<string, object> result = new Dictionary<string, object>();
|
|
|
|
|
|
var inf = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonData);
|
|
|
|
|
|
foreach (KeyValuePair<string, object> 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<string, object> 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<string, object> ite in info)
|
|
|
{
|
|
|
result.Add(item.Key + ite.Key, ite.Value);
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
result.Add(item.Key, item.Value);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
}
|