c# 使用JSON序列化 DataContractJsonSerializer

c# 可以使用DataContractJsonSerializer 进行JSON的序例化;

需要引用命名空间 using System.Runtime.Serialization.Json;

当不需要序例化时,只需要在相应的字段上加   [NonSerialized] 

例如 :

[NonSerialized]
private double m_UpValue;

 

下面给出序例化的过程:

/// <summary>
/// Serialize T to string
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public static string Serialize<T>(T item)
{
if (item == null) return string.Empty;

var serializer = new DataContractJsonSerializer(item.GetType());

using (var ms = new MemoryStream())
{
serializer.WriteObject(ms, item);

var sb = new StringBuilder();
sb.Append(Encoding.UTF8.GetString(ms.ToArray()));

return sb.ToString();
}
}

/// <summary>
/// Deserialize string back to T
/// </summary>
/// <param name="jsonString"></param>
/// <returns></returns>
public static T Deserialize<T>(string jsonString)
{
if (string.IsNullOrEmpty(jsonString)) return default(T);

var ser = new DataContractJsonSerializer(typeof(T));

using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
T jsonObject = (T)ser.ReadObject(ms);
return jsonObject;
}
}

 

posted @ 2018-06-28 15:46  cdxy2005  阅读(403)  评论(0)    收藏  举报