C#序列化及反序列化Json对象通用类JsonHelper

时间:2021-05-13 17:25:01

当今的程序界Json大行其道。因为Json对象具有简短高效等优势,广受广大C#码农喜爱。这里发一个序列化及反序列化Json对象通用类库,希望对大家有用。

    public class JsonHelper
{
#region 对象类型序列化为json 字符
/// <summary>
/// 对象类型序列化为json 字符
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="jsonObject">待转换实体</param>
/// <param name="encoding">编码格式</param>
/// <returns>string</returns>
public static string ObjectToJson<T>(Object jsonObject, Encoding encoding)
{
string result = String.Empty;
DataContractJsonSerializer serializer
= new DataContractJsonSerializer(typeof(T));
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
serializer.WriteObject(ms, jsonObject);
result
= encoding.GetString(ms.ToArray());
}
return result;
}
#endregion

#region json字符反序列化为对象
/// <summary>
/// json字符反序列化为对象
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
/// <param name="json">json字符串</param>
/// <param name="encoding">编码格式</param>
/// <returns>T</returns>
public static T JsonToObject<T>(string json, Encoding encoding)
{
T resultObject
= default(T);
try
{
resultObject
= Activator.CreateInstance<T>();
DataContractJsonSerializer serializer
= new DataContractJsonSerializer(typeof(T));
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(encoding.GetBytes(json)))
{
resultObject
= (T)serializer.ReadObject(ms);
}
}
catch { }
return resultObject;
}
#endregion
}