using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.IO;
namespace WWPipeLine.Commons.SerializeHelper
{
///
/// 通用Json的序列化和反序列化
///
public class JsonHepler
{
private JsonHepler()
{
}
///
/// 序列化为字符串
///
/// 需序列化的对象
///
public static string Json_SerializeObject(object obj)
{
return Json_SerializeObject(obj, false);
}
///
/// 带格式化的序列化
///
/// 需序列化的对象
/// 是否时间格式化
///
public static string Json_SerializeObject(object obj, bool isTimeFommat)
{
try
{
if (isTimeFommat)
{
var aIsoDateTimeConverter = new IsoDateTimeConverter
{
DateTimeFormat = "yyyy-MM-dd HH:mm:ss"
};
return JsonConvert.SerializeObject(obj, Formatting.Indented, aIsoDateTimeConverter);
}
else
{
JsonSerializerSettings jsonSettings = new JsonSerializerSettings
{
DefaultValueHandling = DefaultValueHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
TypeNameHandling = TypeNameHandling.Auto,
MissingMemberHandling = MissingMemberHandling.Ignore,
ObjectCreationHandling = ObjectCreationHandling.Reuse,
PreserveReferencesHandling = PreserveReferencesHandling.None,
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
ConstructorHandling = ConstructorHandling.Default
};
return JsonConvert.SerializeObject(obj, Formatting.Indented, jsonSettings);
}
}
catch (Exception ex)
{
return string.Empty;
}
}
///
/// 反序列化为指定对象
///
/// 反序列化的对象类型
/// 对象的Json字符串
///
public static T Json_DeserializeObject(string strSerializeJson) where T : class
{
try
{
return (T)JsonConvert.DeserializeObject(strSerializeJson, typeof(T));
}
catch (Exception ex)
{
return default(T);
}
}
///
/// 反序列化为指定对象
///
///
///
///
public static T Json_Deserialize(string strSerializeJson)
{
try
{
return (T)JsonConvert.DeserializeObject(strSerializeJson, typeof(T));
}
catch (Exception ex)
{
return default(T);
}
}
///
/// 序列化为Xml字符串
///
/// 需序列化的对象
///
public static string Json_SerializeObject_Xml(object obj)
{
string jsonData = Json_SerializeObject(obj, true);
try
{
return JsonConvert.DeserializeXmlNode(jsonData).InnerXml.ToString();
}
catch (Exception ex)
{
return string.Empty;
}
}
///
/// Xml节点序列化为指定对象
///
/// 反序列化的对象类型
/// Xml的节点
///
public static T Json_DeserializeObject_Xml(System.Xml.XmlNode xmlNode) where T : class
{
string jsonData;
try
{
jsonData = JsonConvert.SerializeXmlNode(xmlNode);
}
catch (Exception ex)
{
return default(T);
}
return Json_DeserializeObject(jsonData);
}
///
/// 序列化为文件
///
/// 序列化的文件名称:全路径
/// 需序列化的对象
///
public static bool SaveObjectInfoToFile(string path, object info)
{
using (StreamWriter sw = new StreamWriter(path))
{
try
{
JsonSerializer serializer = new JsonSerializer();
JsonWriter writer = new JsonTextWriter(sw);
serializer.Serialize(writer, info);
writer.Close();
sw.Close();
return true;
}
catch
{
return false;
}
finally
{
sw.Close();
}
}
}
///
/// 反序列化为对象
///
/// 反序列化的对象类型
/// 序列化的文件名称:全路径
///
public static T GetObjectInfoFromFile(string path)
{
using (StreamReader sr = new StreamReader(path))
{
try
{
JsonSerializer serializer = new JsonSerializer();
JsonReader reader = new JsonTextReader(sr);
return serializer.Deserialize(reader);
}
catch(Exception ex)
{
return default(T);
}
finally
{
sr.Close();
}
}
}
///
/// JSon串转为对象
///
///
/// Json串
/// 对象类型
///
public static T GetObjectType(string infoJson, Type type)
{
try
{
var data = Commons.SerializeHelper.JsonHepler.Json_DeserializeObject